ここに私の状況。私はまだこれでかなり新しいです。Linux仮想ボックスでいくつかの.txtファイルを生成し、Windowsでac#winformアプリケーションを使用してデータをグラフにロードしています。約20個のファイルがあります。私が行う必要があるのは、最初のファイルをロードしてチャートに表示し、ファイルをリロードしてチャートに表示し、ファイルをリロードしてチャートに表示するなどです。私のcコードは毎回同じファイルに上書きしています新しい値との時間。したがって、グラフを見ると、WinFormsで、新しいデータセットが読み込まれるたびにデータが変換されていることがわかります。これはかなり迅速に発生するはずです。新しいデータの一部が読み込まれますが、別のプロセスで使用されているファイルに関するエラーが発生します。私はエラーについて読んでいますが、私はまだそれを修正する方法を理解していないと思います。スムーズに実行されるように、ファイルを生成しているcコードがc#チャートの読み込みコードと一致する必要があります。CIでは、ファイルを書き込み用に開くことができなかったというエラーメッセージも表示されます。
これが私がこれまでに試したことです。書き込み用にファイルを開く前に、cコードでしばらく待ってみましたが、機能しませんでした。また、エラーなしで開くまでファイルを繰り返し開こうとしましたが、機能しませんでした。私が考えることができた他の唯一の解決策は、1.txt 2.txt 3.txt ...のようなファイルを作成し、それらを連続してロードすることでした。それは私が行かなければならない方法かもしれません。しかし、私はまだ新しいので、これを開始するための最良の方法であるかどうかは実際にはわかりません。
Cコード
for(i = 0; i < FILES; i++){
fd = fopen(path, "w+");
if( fd == NULL ){
printf( "Could not open file for writing. Exiting...\n");
exit(-1);
}
for(j = 0; j < ROW; j++){
fprintf(fd, "%.4f", vector[i][j]);
fprintf(fd, "%s", "\n");
}
fclose(fd);
}
C#コード
// Define the event handlers.
private void OnChanged(object source, FileSystemEventArgs e)
{
FinalList.Clear();
chart4.Series[0].Points.Clear();
loadData(FinalPath, FinalList, chart4);
}
private void loadData(String path, List<double> list, System.Windows.Forms.DataVisualization.Charting.Chart chart)
{
string line = null;
double value = 0;
using (TextReader reader = File.OpenText(path))
{
line = reader.ReadLine();
while (line != null)
{
value = System.Convert.ToDouble(line);
list.Add(value);
line = reader.ReadLine();
}
}
for (int i = 0; i < ROW; i++)
{
chart.Series["Graph"].Points.AddXY(i + 1, list[i]);
}
}