0

私は何かをするアプリケーションを持っています。一般的に、彼らの主な仕事は、Excel ファイルからデータを取得した後にチャートを分析して描画することです。このアプリケーションは、最大で同時に実行できます。10 個の分析が行われ、それぞれが別の tabPage コントロール内の別のスレッドで実行されます。3つの問題が発生している瞬間まで、すべてが素晴らしいです。

  1. 1 つの Excel ファイルからデータを読み取ることができず、いくつかの分析を行うことができません。あるファイルを 1 つの分析に使用していて、この同じファイルを別の分析に使用したい場合、このファイルが別のプロセスによって実際に使用されているメッセージがあるため、これは不可能です。Excel ファイルからデータを読み取るには、oleDBConnection スキーマを使用しています。この問題を解決する方法。

  2. 1つのファイルにデータを書き込むのと同じ問題があります。アプリケーションで、異なるスレッドから 1 つのファイルに同じメッセージを強制的に書き込む方法。

  3. アプリケーションを閉じたい場合(分析の1つが機能している場合)、「中断がスレッド(またはそのようなもの)を持続しました」という通信メッセージが表示されます。どうしてか分かりません。私はこれを支持します

私は月曜日にそれを解決しようとしていて、効果がないので、この問題を解決するのを手伝ってください:(

4

1 に答える 1

0

考えられる例

string  FullExcelFilePath = "C:\ExcelFile.xls";


Excel.Application xlApp = new Excel.Application()

Excel.WorkBook xlWorkBook1 = xlApp.WorkBooks.Add(FullExcelFilePath);
Excel.WorkBook xlWorkBook2 = xlApp.WorkBooks.Add(FullExcelFilePath);

//then in your first ThreadCall
foreach(Excel.WorkSheet in xlWorkBook1.Sheets)
{
//get what you want
}


//then in your 2nd ThreadCal
foreach(Excel.WorkSheet in xlWorkBook2.Sheets)
{
//get what you want
}

あなたができる他のオプションは次のとおりです。

他のスレッドのXlsのコピーを作成してから、

その他のスレッドでxlsファイルのコピーを使用します。

File.Copy(strFileName, strDestination);

その後、それを削除します

File.Delete(strFileNameSecondVersion)
于 2011-02-23T20:50:33.443 に答える