【问题标题】:WP7 Invalid cross-thread access - ScheduledTaskAgentWP7 无效的跨线程访问 - ScheduledTaskAgent
【发布时间】:2011-09-15 08:55:05
【问题描述】:

在 WP7 应用程序中,我正在调用一些代码来从 ScheduledAgent 类的 onInvoke 方法更新动态磁贴。

得到一个无效的跨线程错误。

失败的那一行是

var fontForeground = new SolidColorBrush(Colors.White);

我了解在此后台任务中我无法调用 API 的限制,但我只是尝试设置一些东西来生成我自己的图像以显示在动态磁贴上。

我在这里做错了什么明显的事情。

  • 谢谢

更新...

我发现了这个问题

How can I render text on a WriteableBitmap on a background thread, in Windows Phone 7?

这与我遇到的问题相同,虽然这里有一些很好的对话,但似乎没有一种简单的方法可以解决这个问题?

【问题讨论】:

    标签: windows-phone-7 background-process multithreading


    【解决方案1】:

    使用Dispatcher 在 UI 线程上而不是在后台线程上执行代码:

    Deployment.Current.Dispatcher.BeginInvoke(()=>
        { 
             fontForeground  = new SolidColorBrush(Colors.White);
             ...        
       });
    

    【讨论】:

    • 感谢您的快速回答。该行不会编译“无法将 lambda 表达式转换为类型”System.Windows.Threading.DispatcherPriority”,因为它不是委托类型。您提到在 UI 线程中执行代码 - 相同的代码是否可以在前台应用程序中工作。我是尝试在前台和后台使用相同的代码。
    • 编辑了我的答案。上面的代码将在 UI 线程上执行。虽然我不确定这是否能解决您的问题,因为我不熟悉 ScheduleAgent,但值得一试:)
    • 抱歉 - 仍然无法理解语法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多