等待WPF应用程序中的两个不同的异步任务

时间:2014-05-03 13:25:18

标签: c# wpf asynchronous async-await

我正在尝试编写一个WPF应用程序,其中包含:

  • 可以随时通过网络异步接收数据,
  • 数据可以异步发送,但在收到特定请求之前,不得继续执行。

典型的执行顺序如下:

  1. 我从服务器收到一个初步问候语,异步。
  2. 我发送一个以“01”开头的请求。
  3. 我等到收到以“01”开头的回复。
  4. 然后我发送一个以“02”开头的请求。
  5. 我等到收到以“02”开头的回复。
  6. ...
  7. 我实际上需要同时等待两件事。我必须继续从网络接收数据,同时在接收任务允许之前不要让发送任务完成。要做后者,我正在使用TaskCompletionSource,然后我希望将其用于SetResult(),从而完成发送任务。

    但是,我发现这种方法会导致死锁。一旦发送任务等待TaskCompletionSource,接收任务就会停止......接收数据。

    我如何处理这种情况并同时有两个单独的任务在等待,以便最终可以让另一个完成?

0 个答案:

没有答案