【发布时间】:2016-09-29 23:22:54
【问题描述】:
我什至不假装理解 C# 中的线程,所以我正在寻找一个关于线程的非常简单的解释 - 更具体地说是 .NET 4 中的 StartNew() 功能。
我使用以下方法调用另一种方法,使用一种即发即弃的方法。当网页需要启动一个耗时的过程,但页面并不真正需要等待结果时,我可能会这样做。据我了解,DoSomething() 方法将“异步”运行。
System.Threading.Tasks.Task.Factory.StartNew(() =>
{
DoSomething();
});
上面的代码似乎可以按我的意愿工作——尽管我有一个偷偷摸摸的怀疑,我并没有真正将它用于它的预期目的。我还在 DoSomething() 方法运行之前关闭的控制台应用程序中使用它。我不确定为什么它适用于网页而不适用于控制台应用程序 - 我假设是因为即使页面已卸载,应用程序池也会继续运行。
真正让我感到困惑的是,我见过很多例子,它们以 .Wait() 结束此类代码。据我了解, .Wait() 意味着此页面上的其余代码将等到 DoSomething() 方法运行......在这种情况下 - 在我有限的理解中 - 这似乎否定了使用的任何好处首先是 StartNew()?
我希望有人能以我简单的小头脑能理解的方式帮助解释这一点!也许您还可以解释一种使用即发即弃方法调用方法的更好方法?非常感谢!
【问题讨论】:
-
您几乎不应该在 ASP.NET 中创建线程。也可以更好地使用hangfire.io
标签: c# asp.net multithreading task wait