【发布时间】:2015-04-13 18:47:42
【问题描述】:
我的 UI 线程上有两个进程正在运行。 但是,当我使用 BeginGetStream 功能运行第一次时,它进入循环并等待其执行并在您准备好时返回结果,但在第二次运行中,通过 BeginGetResponse 功能,这个“死”在那里并且程序确实不继续,也不返回我想要的值。在这些过程中使用 IasynResult。
我试过了:
转换为任务(Task.Run)
为进程分配一个新线程(Thread x = new Thread())
设置参数ConfigureAwait(ConfigureAwait( continueOnCapturedContext: false), ConfigureAwait (false));
转换为 asyncronos 方法并应用“等待”
使用 AutoResetEvent 等待进程完成,不要继续。
放置线程休眠(Thread.Sleep)
- Thread.Start、Thread.Join 的使用
一些代码示例:
第一次请求:
int number = 123;
1Request.Headers["Teste"] = string.Format("Teste{0}", number);
IAsyncResult AsyncronousResult= null;
try
{
await Task.Run(() => 1Request.BeginGetRequestStream(
(IAsyncResult result) =>
{
AsyncronousResult= result;
//handle.Set();
}, 1Request));
Task.WaitAny();
}
catch (Exception) { }
第二次请求:
HttpWebRequest 2request = (HttpWebRequest)AsyncronousResult.AsyncState;
IAsyncResult AsyncronousResult = null;
Try
{
await Task.Run(() => 2request.BeginGetResponse(
(IAsyncResult result) =>
{
AsyncronousResult = result;
}, 2request));
Task.WaitAny();
}
catch
{
}
...我不知道还能尝试什么... 有人可以帮助我。
谢谢。
【问题讨论】:
-
您能否提供一些代码来重现该问题?光看描述很难理解
-
你好,当然。我现在编辑。谢谢
标签: c# windows-phone-8 asynchronous deadlock ui-thread