通过服务器发送消息C#BackgroundWorker的线程写入Excel 2007中

问题描述:

我将不胜感激以下设计的一些看法:通过服务器发送消息C#BackgroundWorker的线程写入Excel 2007中

我有一个不断发送,我写了一个C#程序集订阅的邮件服务器。目前,无论何时发送任何消息,我都会将其异步写入ms Excel 2007.由于这是一个资源繁重的过程,因此我使用了后台工作线程来处理与服务器的连接,并在写入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(); 

    } 

问:这是一个很好的设计吗?另外,我让主线程建立conn到服务器,并让后台工作线程通过createSpreadsheet(String msg)处理写入excel。

我怀疑这会不会带来多大的改变,特别是如果Excel可见模式下的自动化,并不断重新显示在他们的新数据中的所有这些单元格,显示图形等COM自动化相当沉重反正肯定从预订接收数据的服务器线程中获取任何加载资源。将数据接收从Excel调用中解耦出来的一个原因可能是您的输入数据倾向于以很大的突发速率到达,在这种情况下,两个线程之间的排队链接会提高性能,并且可能会加载,因为可以将更多单元格写入一个Excel电话,(不知道这个 - 你需要尝试它)。

我已经使用这种应用程序来分析/显示电信系统上的测试结果。它工作正常。我关闭了数据源并在主线程中运行自动化,使用PostMessage(所有Delphi非托管代码)传递数据。没有在C#中尝试过。

您可以轻松地测试这个&看看负载/性能下降吗?

Rgds, Martin