multithreading - WP7 - 访问 UI 线程?

标签 multithreading asynchronous windows-phone-7 ui-thread

如何访问 WP7 应用程序的 UI 线程?
如果有帮助,我正在使用以下代码。

    private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)
    {
        AcquireNews(l => { listBox1.Items.Add(l[0]); });
        // Here is where I get an exception saying "Invalid cross-thread access."
    }

    void AcquireNews(Action<List<object>> callback)
    {
        var r = HttpWebRequest.Create("http://www.google.com") as HttpWebRequest;

        r.BeginGetResponse(result =>
            {
                var response = r.EndGetResponse(result);

                List<object> l = new List<object>();

                var s = response.GetResponseStream();

                var buffer = new byte[s.Length];

                s.Read(buffer, 0, (int)s.Length);

                l.Add(System.Text.Encoding.UTF8.GetString(buffer, 0, buffer.Length));

                callback(l);
            },
        null);
    }

最佳答案

您可以为此使用 Dispatcher。

Dispatcher.BeginInvoke( () => { /* Your UI Code - ie Callback() or listbox.items.add */ } );

关于multithreading - WP7 - 访问 UI 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4414312/

相关文章:

iphone - 主线程的 NSRunLoop 在辅助线程中被引用

c - 信号异步是什么意思?

c# - 异步Socket.Begin接收内部调用之谜

javascript - 将 Promise 添加到 DomOutline 事件处理程序

windows-phone-7 - ListBox ItemsSource 绑定(bind)通过代码而不是通过 XAML

c# - 使用 ASP.NET MVC 3 创建安全的高分服务

objective-c - 如何在Objective-C中的原子属性的ivar上创建手动锁定?

c++ - 关闭多线程 NSDocument

c++ - 等待时销毁 condition_variable

windows-phone-7 - SkyDrive 的编程访问