等待方法执行完成

9

如何使用C#等待方法执行完毕?


5
请问您能否稍微解释一下您想要实现什么? - FarligOpptreden
5
如果您的应用程序不是多线程的,并且您调用的方法不是异步的,则在方法返回后,将调用下一段代码。我们需要更多信息来进行处理,您是否正在使用线程或Begin..()方法? - Kevin
我们必须假设你正在谈论一个异步方法调用吗? - Sergi Papaseit
3个回答

56

除非您使用多个线程,否则在方法完成之前,执行不会继续在调用代码中。

如果您正在使用多个线程,那么这取决于您如何启动任务。例如,您可以使用异步委托执行(foo.BeginInvoke(...))或任务并行库,或仅创建一个新线程。每种方法都有自己等待任务/线程完成的方式。请提供更多信息,我们可以帮助您,但选项可能包括:

  • 调用委托上的EndInvoke,将BeginInvoke返回的IAsyncResult传递给它。
  • 调用Task.Wait(可选择设置超时时间)。
  • 调用Thread.Join(可选择设置超时时间)。

+1 确定.. @mdm 那就是为什么我们在这里有Jon Skeet - Shekhar_Pro
在多线程代码的情况下提供选项,对此给予+1。 - user
而且,@Pillblast,我猜(但如果我错了肯定会被纠正)这个答案也适用于自动创建/用于按钮onclick处理程序等的线程。 - Arjan
非常感谢您的回答。我阅读了所有内容,最终选择使用第一个版本。谢谢。 - Pillblast

10
  1. 调用该方法。
  2. 等待它执行完毕。

注意:仅适用于阻塞式调用。


7
我假设你正在询问如何在主线程中等待另一个线程上执行的代码。为此,Thread.Join() 方法将实现你想要的效果。
(关于如何进行多线程编程的优秀教程。)

1
我知道你几个月前发布了这篇文章,但是那个教程链接刚刚拯救了我的生命。非常感谢你分享那个链接。 - JClaspill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接