我正在开发一个小项目,我需要一个接一个地进行两个异步调用.
我的代码看起来像这样:
AsynchronousCall1(); AsynchronousCall2();
我遇到的问题是两个调用都需要一到两秒的时间来执行,我永远不知道哪一个会完成最后一个.我正在寻找的是一种确定谁最后完成的方法.如果Call1()最后完成,我会做一件事.如果Call2()最后完成,我会做另一件事.
这是使用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"); } }