2011-03-14 114 views
5

如何等待一种方法来完成使用C#?等待方法完成

+5

你能解释一下好一点你想实现什么,请? – FarligOpptreden 2011-03-14 09:58:41

+5

如果您的应用程序不是多线程的,并且您调用的方法不是异步,则在方法返回后将调用下一段代码。我们在这里需要更多的信息来处理,你使用线程还是'Begin ..()'方法? – Kevin 2011-03-14 10:01:30

+0

我们必须假设您正在讨论异步方法调用吗? – 2011-03-14 10:02:16

回答

43

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

如果你使用多线程,它真的取决于你如何启动任务。例如,您可以使用异步委托执行(foo.BeginInvoke(...))或任务并行库,或者简单地创建一个新线程。每种方法都有自己的等待,直到任务/线程完成。请给我们更多的信息,我们可以帮你多,但选择可以包括:

  • delegate上EndInvoke,传递由BeginInvoke
  • 调用Task.Wait(任选超时)返回IAsyncResult
  • 调用Thread.Join(任选超时)
+30

+1一个明智的答案,乔恩Skeet不喷出任何废话。 – mdm 2011-03-14 10:01:56

+0

+1当然.. @mdm这就是为什么我们有[Jon Skeet](http://blog.stackoverflow.com/2008/11/stack-overflow-is-you)在这里 – 2011-03-14 10:10:23

+0

为实际提供选项的情况下+1多线程代码。 – 2011-03-14 10:10:29

10
  1. 调用该方法。
  2. 等待它完成。

注意:只适用于阻止呼叫。

+35

伟大的算法... /我鼓掌PS:你忘了'3。利润!!!' – zerkms 2011-03-14 10:00:44

6

我以为你是问如何等待另一个苏氨酸执行代码在你的主线程中。为此目的,Thread.Join()方法将做你想要的。

(一个很好的教程就如何做到Multithreading。)

+1

我知道你在几个月前发布了,但是这个教程的链接只是挽救了我的生活。我无法感谢您分享该链接。 – JClaspill 2011-10-28 16:14:45

+0

@JClaspill我很高兴它帮助你:) – 2011-10-28 17:48:07