c# - HttpWebRequest 回调被 UI 阻塞

标签 c# windows-phone-7

已编辑:在 Windows Phone 上,我在一个单独的线程上调用 HttpWebRequest.BeginGetResponse 我已开始。然后我调用 MessageBox.Show()。问题是在我关闭 MessageBox 之前不会调用回调。

void GetResponseCallback(IAsyncResult asynchronousResult) {
    //Not getting called until I dismiss MessageBox
}

void getWeb() {
    Thread.Sleep(1000);
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(url));
    request.Method = "GET";
    request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
}

new Thread(getWeb).Start(); //Start a new thread
MessageBox.Show();

MessageBox 是否应该阻塞后台线程的回调?

最佳答案

需要添加对Microsoft.Phone.Reactive的引用

试试这个:

private void PushMe_Click(object sender, RoutedEventArgs e)
        {
            var scheduler = Scheduler.NewThread;
            scheduler.Schedule(action => GetWeb());         
            MessageBox.Show("This is a test.", "Test caption.", MessageBoxButton.OK);
        }

        private void GetWeb()
        {
            Thread.Sleep(3000);
            var httpWebRequest = (HttpWebRequest) WebRequest.Create("http://www.stackoverflow.com");
            httpWebRequest.Method = "GET";

            httpWebRequest.BeginGetResponse(BeginGetResponseCallback, httpWebRequest);
        }

        private void BeginGetResponseCallback(IAsyncResult ar)
        {

        }

关于c# - HttpWebRequest 回调被 UI 阻塞,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12858031/

相关文章:

c# - 如何确保 NJsonSchema 只包含必填字段?

c# - 幕后 Actor 是什么

c# - 我想每秒显示数字时钟来刷新TextBox(Windows App)

c# - 实现逻辑的好方法,在 ListBox (MVVM) 中选择项目时

c# - 如何将 mongo ObjectID 存储到 SQL Server 中?

c# - 来自 C# : Routine not found 的 ODBC 和 DB2 存储过程

c# - 如何在 Wp7 应用程序中处理 Web 浏览器的前后导航

c# - 删除隔离存储文件

c# - Wpf DataGrid DoubleClick 有奇怪的行为

windows-phone-7 - 我们可以使用 Blackberry 和 Windows 7 SDK 以编程方式截取屏幕截图吗?