当前位置:  开发笔记 > 编程语言 > 正文

异步调用新手问题

如何解决《异步调用新手问题》经验,为你挑选了1个好方法。

我正在开发一个小项目,我需要一个接一个地进行两个异步调用.

我的代码看起来像这样:

AsynchronousCall1();
AsynchronousCall2();

我遇到的问题是两个调用都需要一到两秒的时间来执行,我永远不知道哪一个会完成最后一个.我正在寻找的是一种确定谁最后完成的方法.如果Call1()最后完成,我会做一件事.如果Call2()最后完成,我会做另一件事.



1> Groo..:

这是使用a lock确保只有一个线程可以输入一段代码的简单示例.但这是一个通用的例子,可能是也可能不是最适合您的应用程序.在您的问题中添加一些详细信息,以帮助我们找到您要查找的内容.

 void AsynchronousCall1()
 {
      // do some work
      Done("1");
 }

 void AsynchronousCall2()
 {
      // do some work
      Done("2");
 }

 readonly object _exclusiveAccess = new object();
 volatile bool _alreadyDone = false;
 void Done(string who)
 {
      lock (_exclusiveAccess)
      {
           if (_alreadyDone)
               return;

           _alreadyDone = true;
           Console.WriteLine(who + " was here first");
      }
  }

推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有