C#使用多线程还是作为单独的应用程序运行?

C#使用多线程还是作为单独的应用程序运行?,c#,C#,我有一个windows应用程序,它从数据库中读取数据,并根据用户选择的项目填充多个Listview容器。特定Listview中的某些数据可以通过菜单项选项右键单击“将数据写入Excel”。这可能需要大约10分钟才能完成 我用独立代码编写了Excel互操作部分,或者可以将其合并到应用程序项目中。Excel Interop应用程序只需要1个参数即可完成其工作 我的问题是…我应该将它合并到Windows应用程序中并使用多线程处理,还是将其作为一个独立的应用程序运行(这似乎更有效),从Windows应用

我有一个windows应用程序,它从数据库中读取数据,并根据用户选择的项目填充多个Listview容器。特定Listview中的某些数据可以通过菜单项选项右键单击“将数据写入Excel”。这可能需要大约10分钟才能完成

我用独立代码编写了Excel互操作部分,或者可以将其合并到应用程序项目中。Excel Interop应用程序只需要1个参数即可完成其工作


我的问题是…我应该将它合并到Windows应用程序中并使用多线程处理,还是将其作为一个独立的应用程序运行(这似乎更有效),从Windows应用程序调用?如果Windows应用程序启动该过程,然后可以忘记它,那么什么是一种好的方法。

我建议使用以下流程:

  • 我们可以创建自己的队列,该队列将在数据库或文件系统中维护
  • 然后我们可以编写一个调度器,它将获取所有未处理的请求,并根据响应标记队列项目的适当状态

  • 现在,您的应用程序可以调用排队过程并从那里继续前进。

    我认为这个问题的答案是:“如果用户在这10分钟内关闭主应用程序,会发生什么?”

    如果文件仍然应该被写入,那么独立的应用程序是完美的,因为您的线程将无法生存


    如果文件创建被中断,那么我认为没有理由不使用多线程,因为默认情况下它看起来更简单,特别是,如果这部分代码在同一个应用程序中,则调试这部分代码要容易得多。

    使用另一个线程来编写它。

    您正在寻找windows服务吗?在应用程序本身中向用户提供反馈(进度条)要比同时进行多个进程对话容易得多。此外,我不明白为什么工作线程的效率会低于控制台应用程序。请参阅,谢谢您的回复。我真的不需要任何反馈给winapp。excel工作表将打开,并要求在完成时另存为。我只是想开始,忘掉它,而winapp仍然像往常一样。顺便说一句,我已经做了很多excel互操作来从数据库生成报告,这似乎与您正在做的类似。有些库可以编写原生excel xls或xlsx文件,并且可以在几秒钟而不是几分钟内完成。xlsgen是迄今为止我最喜欢的,因为它是最完整的。很好的一点是,如果winapp关闭,将继续写入Excel文件。现在我正在寻找一种可靠的方法来实现这一点,当然也不必等待进程完成——停止我的windows应用程序。
    process process=new process();string arguments=“whatever”process.StartInfo.arguments=参数;process.StartInfo.FileName=“myexe.exe”process.Start()