Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在.NET控制台应用程序中将任务提交到Hangfire后如何执行代码_C#_.net_Hangfire - Fatal编程技术网

C# 在.NET控制台应用程序中将任务提交到Hangfire后如何执行代码

C# 在.NET控制台应用程序中将任务提交到Hangfire后如何执行代码,c#,.net,hangfire,C#,.net,Hangfire,我已经在.NET控制台应用程序中实现了Hangfire,它运行良好。在将任务(在我的例子中是下载文档)提交到Hangfire之后,我需要更新数据库中任务的状态(文档下载状态),为此,我有“UpdateDocumentStatus();”方法,但它从未执行过(在Console cmd窗口中输入内容时执行),因为我有Console.ReadKey();在节目中。如果我删除Console.ReadKey();吊火不起作用 请向我推荐Console.ReadKey()的替代方案;让Hangfire执行我

我已经在.NET控制台应用程序中实现了Hangfire,它运行良好。在将任务(在我的例子中是下载文档)提交到Hangfire之后,我需要更新数据库中任务的状态(文档下载状态),为此,我有“UpdateDocumentStatus();”方法,但它从未执行过(在Console cmd窗口中输入内容时执行),因为我有Console.ReadKey();在节目中。如果我删除Console.ReadKey();吊火不起作用

请向我推荐Console.ReadKey()的替代方案;让Hangfire执行我的“UpdateDocumentStatus();”


首先,Hangfire是一个基于队列的系统。所有任务都在后台进程中执行。这需要服务器持续运行以拾取作业

接下来,您需要了解
使用
做了什么。使用将为对象提供范围。这意味着在using语句结束时,对象将被释放

就你而言

  • BackgroundJobServer启动
  • 读键
  • dispose BackgroundJobServer
只要您不按下一个键,您就保持在using语句中,并且您的服务器保持活动状态(未禁用)。这就是为什么在删除“Console.ReadKey();”时您的服务器不会执行任何操作,因为它几乎会立即被处置

对于您来说,修复方法基本上是:删除using块

       GlobalConfiguration.Configuration.UseMemoryStorage();
       BackgroundJob.Enqueue(() => DownloadDocument());
       var server = new BackgroundJobServer())
       UpdateDocumentStatus();
       Console.ReadKey();

谢谢,@Kevin,谢谢你的回答。@Srinivas解决了你的问题,还是你自己已经解决了?我已经解决了这个问题。
       GlobalConfiguration.Configuration.UseMemoryStorage();
       BackgroundJob.Enqueue(() => DownloadDocument());
       var server = new BackgroundJobServer())
       UpdateDocumentStatus();
       Console.ReadKey();