如何在c#中异步调用方法

时间:2014-07-14 06:07:04

标签: c# .net asynchronous-method-call

我有一个方法public void foo(){},后者又调用另一个方法public void fooBL(){} 它位于BusinessLogic层中。 fooBL()然后调用DataAccessLayer中的另一个方法fooDAL()。我想在按钮单击事件上异步调用foo()。我使用的是.NET4.0。

3 个答案:

答案 0 :(得分:2)

这取决于你的目标。

调用foo异步的最简单方法是:

Task t = new Task.Factory.StartNew(foo);

答案 1 :(得分:1)

您可以使用线程异步运行方法。以下是一个例子:

Thread t = new Thread(new ThreadStart(foo));              
t.Start();

我希望它可以帮到你。 :)

答案 2 :(得分:1)

您可以在Task.Run中包装任何内容以通过默认调度程序(ThreadPool)运行它:

Task.Run(() => {
    yourMethodCallHere();
});

如果您不知道它是如何工作的,您应该避免使用StartNew。您可能会在捕获当前正在执行的TaskScheduler实例时引入潜在的错误,并且您无疑会遇到"跨线程"处理UI元素时的异常(或其他更微妙的错误)。