这里是我的情况。我对此还是很陌生。我在我的 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]);
}
}