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

我希望对以下devise有一些看法:

我有一个服务器,不断发送消息,我写了一个C#程序集订阅。 目前,每当有消息发送时,我会将其asynchronous写入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(); } 

问:这是一个很好的devise吗? 或者,我已经让主线程build立conn到服务器,并让backgroundworker线程通过createSpreadsheet(String msg)处理写入excel。

我怀疑它不会有什么区别,特别是如果Excel在可见模式下自动运行,并不断重新显示所有那些包含新数据的单元格,显示graphics等。无论如何,COM自动化相当繁重,肯定会从订阅接收数据的服务器线程。 从Excel调用中解除数据接收的一个原因可能是您的input数据往往会以很大的突发速率到达,在这种情况下,两个线程之间的排队链接会提高性能,并且可能会加载,因为可以将更多的单元格写入一个Excel调用,(不知道这个 – 你需要尝试它)。

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

你可以轻松地testing这个,看看负载/性能下降?

Rgds,Martin