【问题标题】:Error cause by running multiple Process, C++ and Excel运行多个进程、C++ 和 Excel 导致的错误
【发布时间】:2018-11-02 07:02:52
【问题描述】:

这是我的代码:

private void button1_Click(object sender, EventArgs e)
{

    for(i = 0; i < 500; i++)
    {
        CallingTailorCode;
        getvalue();
        WriteData();

    }
}
public void getvalue()
{
    string[] lines = File.ReadAllLines("C:\\Users\\bryan\\Desktop\\generationfile.txt");
    foreach (string line in lines)
    {
        notepadvalue = line;
    }
}
private void CallingTailorCode()
{
    Process callcfunction = new Process();
    callcfunction.StartInfo.UseShellExecute = false;
    callcfunction.StartInfo.FileName = "C:\\Users\\bryan\\Desktop\\ConsoleApplication1\\Debug\\ConsoleApplication1.exe";
    callcfunction.Start();
    Thread.Sleep(1000);
}
public void WriteData()
{
    Excel excel = new Excel("C:\\Users\\bryan\\Desktop\\SphereConvRws.xlsx", 1);

    excel.WriteToCell(i, 0, notepadvalue);
    excel.Save();
    excel.close();
    Thread.Sleep(1000);

}

CallingTailorCode() 是 c++ 和代码,我将输出存储在 .txt 文件中。

getValue() 我在其中读取了.txt 文件并将其存储为变量。

最后,WriteData() 我将值存储在 Excel 表中。

如果我将循环设置为 (i generationfile.txt 之类的错误。我想知道这个问题是否与程序不异步有关?我应该如何使这段代码异步?

我为CallingTailorCode 设置了线程(1000),因为它是一个遗传算法代码,为了让它运行,我不确定我做对与否

【问题讨论】:

  • getValue() 看起来有点奇怪——循环只是一遍又一遍地设置一个变量……这是故意的吗?
  • 是的,我是故意创建的,所以我可以将值传递给 WriteData() 方法

标签: c# asp.net asynchronous


【解决方案1】:

我应该使用 proccess.WaitForExit(),而不是使用 thread.sleep。使程序运行得更快,循环内的方法运行有序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多