在我的网站,我需要做一个重复的任务,不应该影响网站的主要活动和性能。所以我想我需要使用线程。我是Iternet中线程的新手。如何使用线程是Iternet?任何教程或参考任何文章将是一个很大的帮助。
dfty9e191#
这里有一个关于如何执行multi-threaded applications in .NET的很棒的教程。在另一个线程上完成工作的一个简单方法是使用BackgroundWorker。在Web上处理其他线程上的繁重任务时,您可能希望使用 AJAX 发起请求,然后“轮询”答案。MSDN上有一篇文章:Use Threads and Build Asynchronous Handlers in Your Server-Side Web Code,它有点老,但我认为你可以通过阅读它得到一个基本的理解。
mrphzbgm2#
在 ASP.NET 应用 程序 中 执行 此 操作 的 正确 方法 是 使用 HostingEnvironment.QueueBackgroundWorkItem 。 这样 可以 确保 后台 任务 在 IIS 应用 程序 被 回收 、 计算机 关闭 或 类似 情况 下 正常 关闭 。在 应用 程序 启动 时 调用 一 次 :
HostingEnvironment.QueueBackgroundWorkItem
HostingEnvironment.QueueBackgroundWorkItem(RunInBackground);
中 的 每 一 个然后 实现 这样 一 个 方法 :
private async Task RunInBackground(CancellationToken cancellationToken) { while (!cancellationToken.IsCancellationRequested) { // Repetetive task await Task.Delay(TimeSpan.FromMinutes(1)); } }
格式你 也 可以 使用 HostingEnvironment.RegisterObject , 更 多 地 手动 完成 事情 。 你 会 获得 一些 控制 权 , 但 会 不 那么 简单 。
HostingEnvironment.RegisterObject
bfnvny8b3#
在. NET中使用多线程有多种不同的方法。如前所述,您可以使用BackgroundWorker,但也可以使用Task based Asynchronous Programming,这是推荐的方法,因为.NET中提供了TPL这意味着您可以将需要在另一个线程上完成的工作卸载,就像
Task.Factory.StartNew(() => DoSomeWork());
Stephen Cleary的This文章也是一本有趣的读物,它将BackGroundWorker与TPL进行了比较。此外,请记住,如果您在www.example.com中执行长时间运行的任务asp.net,您的请求可能需要很长时间才能完成。在其他服务中执行长时间运行的任务可能会更好,例如Hangfire。
3条答案
按热度按时间dfty9e191#
这里有一个关于如何执行multi-threaded applications in .NET的很棒的教程。在另一个线程上完成工作的一个简单方法是使用BackgroundWorker。
在Web上处理其他线程上的繁重任务时,您可能希望使用 AJAX 发起请求,然后“轮询”答案。
MSDN上有一篇文章:Use Threads and Build Asynchronous Handlers in Your Server-Side Web Code,它有点老,但我认为你可以通过阅读它得到一个基本的理解。
mrphzbgm2#
在 ASP.NET 应用 程序 中 执行 此 操作 的 正确 方法 是 使用
HostingEnvironment.QueueBackgroundWorkItem
。 这样 可以 确保 后台 任务 在 IIS 应用 程序 被 回收 、 计算机 关闭 或 类似 情况 下 正常 关闭 。在 应用 程序 启动 时 调用 一 次 :
中 的 每 一 个
然后 实现 这样 一 个 方法 :
格式
你 也 可以 使用
HostingEnvironment.RegisterObject
, 更 多 地 手动 完成 事情 。 你 会 获得 一些 控制 权 , 但 会 不 那么 简单 。bfnvny8b3#
在. NET中使用多线程有多种不同的方法。如前所述,您可以使用BackgroundWorker,但也可以使用Task based Asynchronous Programming,这是推荐的方法,因为.NET中提供了TPL
这意味着您可以将需要在另一个线程上完成的工作卸载,就像
Stephen Cleary的This文章也是一本有趣的读物,它将BackGroundWorker与TPL进行了比较。
此外,请记住,如果您在www.example.com中执行长时间运行的任务asp.net,您的请求可能需要很长时间才能完成。在其他服务中执行长时间运行的任务可能会更好,例如Hangfire。