Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.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# 根据用户请求在后台生成文件_C#_Asp.net_Multithreading_File - Fatal编程技术网

C# 根据用户请求在后台生成文件

C# 根据用户请求在后台生成文件,c#,asp.net,multithreading,file,C#,Asp.net,Multithreading,File,我有一个C#web应用程序(MVC1、.NET3.5),具有生成报告的功能。我想知道是否有人对如何实现以下场景提出了建议: 已登录用户单击“报告”按钮,然后继续浏览网站的其他部分或直接注销 报告生成完成后,将通过电子邮件发送给用户 主要问题是-我如何在服务器上启动一个单独的线程来完成这个任务?如果多线程不是解决问题的方法,请随时提出其他建议。生成报告的典型时间可达10分钟以上。而且,这个功能一次很少被一个以上的用户使用,所以我在想象一个函数“排队”并让它在后台执行的过程 谢谢你的帮助 我建议创建

我有一个C#web应用程序(MVC1、.NET3.5),具有生成报告的功能。我想知道是否有人对如何实现以下场景提出了建议:

  • 已登录用户单击“报告”按钮,然后继续浏览网站的其他部分或直接注销
  • 报告生成完成后,将通过电子邮件发送给用户
  • 主要问题是-我如何在服务器上启动一个单独的线程来完成这个任务?如果多线程不是解决问题的方法,请随时提出其他建议。生成报告的典型时间可达10分钟以上。而且,这个功能一次很少被一个以上的用户使用,所以我在想象一个函数“排队”并让它在后台执行的过程


    谢谢你的帮助

    我建议创建一个Windows服务,轮询数据库以生成报告,生成报告并发送电子邮件。报告的细节由用户在网站上输入,而网站只是将这些信息存储在数据库中。

    您有没有看过。。它非常适合您的用例,或者您可以坚持使用该例程并编写一个windows服务来为您实现这一点。但如果你能负担得起,我建议你加入HPC的行列


    你可以开始阅读它

    @Baz1nga Correct。。。对于10分钟的工作,可能只需要一个线程来执行查询工作……或者像Erik这样的建议,这真的是一把每处理器1千美元的大锤。一个简单的计划任务或后台任务就足够了。这完全取决于用例和应用程序的范围。。很多时候,如果一个工人需要在一小时内钻1000个钉子,他就需要拿起1千美元的大锤。。我看不出投反对票的理由,一条评论应该能解决你的担忧。谢谢你的评论,埃里克。此功能很少由一个以上的用户使用,因此Windows服务方法可能是一种过度使用。有没有更简单的方法在后台“排队”一个函数并让它运行?我一直使用windows服务来执行这类任务。无论如何,我推荐这种方法是因为几个原因;IIS中的线程不是直截了当的,存在很多问题,例如应用程序池重新启动,或者如果您想更改报告,则不需要重新部署网站。此外,C#中的Windows服务非常简单。