C#BackgroundWorker线程通过服务器发送消息写入Excel2007

本文关键字:消息 Excel2007 线程 服务器 C#BackgroundWorker | 更新日期: 2023-09-27 17:58:53

我很感激对以下设计的一些看法:

我有一个不断发送消息的服务器,我写了一个C#程序集来订阅。目前,每当有消息发送时,我都会异步地将其写入msExcel2007。由于这是一个资源密集的过程,我使用了一个后台工作线程来处理与服务器的连接,并在写入excel之前接收消息。

public static void bw_DoWork(object sender, DoWorkEventArgs e)
    {
        //This method will establish conn to server, and subscribe to the messages sent asynchrously.
        //After which, createSpreadsheet(String msg) will be called to write the message to excel
        runMsgServerConsumer();
    }

问题:这个设计好吗?或者,我可以让主线程建立与服务器的连接,并让后台工作线程通过createSpreadsheet(Stringmsg)处理对excel的写入。

C#BackgroundWorker线程通过服务器发送消息写入Excel2007

我怀疑这不会有太大区别,尤其是如果Excel在可见模式下自动运行,并不断地用新数据重新显示所有单元格,显示图表等。无论如何,COM自动化都很重,肯定会阻碍订阅接收数据的服务器线程的任何加载。将数据接收与Excel调用解耦的一个原因可能是,您的输入数据往往会以大量突发到达,在这种情况下,两个线程之间的排队链接将提高性能,并且可能还会加载,因为一个Excel调用中可以写入更多的单元格(对此不确定,您需要尝试)。

我用这种应用程序在远程通信系统上分析/显示测试结果。它运行得很好。我线程化了数据源,并在主线程中运行自动化,用PostMessage(所有Delphi非托管代码)通信数据。没有在C#中尝试过。

你能简单地测试一下吗;看看负载/性能是否下降?

Rgds,Martin