我有一个能够启动调试控制台的 Windows 窗体应用程序。在应用程序中,通过单击菜单,我读取了一个 CSV 文件并将其写入控制台。执行此操作的函数如下。
protected void menuRead_Click(object sender, EventArgs e)
{
// ... functionality to load CSV files
System.IO.Stream inputDataFile = null;
OpenFileDialog fd = new OpenFileDialog();
fd.InitialDirectory = "c:\\";
fd.Filter = "csv files (*.csv)|*.csv|All files (*.*)|*.*";
fd.FilterIndex = 1;
fd.RestoreDirectory = true;
if (fd.ShowDialog() == DialogResult.OK)
{
try
{
if ((inputDataFile = fd.OpenFile()) != null)
{
inputData_exists = true;
// ... read input data from CSV file
using (CsvFileReader reader = new CsvFileReader(inputDataFile))
{
CsvRow row = new CsvRow();
while (reader.ReadRow(row))
{
foreach (string s in row)
{
Console.Write(s);
Console.Write(" ");
}
Console.WriteLine();
}
// ... close the input data stream
inputDataFile.Close();
}
}
}
catch (Exception err)
{
//Inform the user if can't read the file
MessageBox.Show(err.Message);
}
}
}
除以下内容外,一切正常: csv 文件有大约 1200 行代码。执行此代码时,OpenFileDialog() 窗口仅在 csv 文件内容开始写入控制台窗口之前部分关闭。因此,我可以看到写入控制台窗口的数据,并且我的表单上显示了对话窗口的一个小矩形部分。有什么方法可以确保在将数据写入控制台之前关闭对话框?我应该打开一个新线程来与控制台通信吗?任何建议或帮助将不胜感激。谢谢你。