在后台运行流程

时间:2015-12-14 10:41:20

标签: c# multithreading process background

我需要读一个包含我在其他程序中需要的变量的.txt。我更好地解释一下:我有一个程序,当它在.txt读取一些值时进行捕获,例如" 1"," 11"," 111&#34 ; ...当我尝试捕获一个或多个图像时出现的问题。它保存了正确的捕获数量,但所有捕获都具有相同的信息。我把我的代码放在下面:

bool lecturaOK = false;
int time = 0;
while (!lecturaOK)
{
    try
    {
        string text = System.IO.File.ReadAllText(@"prueba.txt");
        if (text == "1" && time == 0)
        {
            time++;
            using (BinaryWriter writer = new BinaryWriter(File.Open(@"kinect" + counter + @".stl", FileMode.Create)))
            {

                Helper.SaveBinaryStlMesh(mesh, writer, true, counter, posicionamiento);
            }
            counter++;
            mesh = this.volume.CalculateMesh(1);
        }
        else if (text == "11" && time == 1)
        {
            time++;
            using (BinaryWriter writer = new BinaryWriter(File.Open(@"kinect" + counter + @".stl", FileMode.Create)))
            {

                Helper.SaveBinaryStlMesh(mesh, writer, true, counter, posicionamiento);
            }
            counter++;
            mesh = this.volume.CalculateMesh(1);
        }
        else if (text == "111" && time == 2)
        {
            time++;
            using (BinaryWriter writer = new BinaryWriter(File.Open(@"kinect" + counter + @".stl", FileMode.Create)))
            {

                Helper.SaveBinaryStlMesh(mesh, writer, true, counter, posicionamiento);
            }
            counter++;
            mesh = this.volume.CalculateMesh(1);
        }
        else if (text == "1111" && time == 3)
        {
            time++;
            using (BinaryWriter writer = new BinaryWriter(File.Open(@"kinect" + counter + @".stl", FileMode.Create)))
            {

                Helper.SaveBinaryStlMesh(mesh, writer, true, counter, posicionamiento);
            }
            counter++;
            mesh = this.volume.CalculateMesh(1);
        }
        else if (text == "11111" && time == 4)
        {
            time++;
            using (BinaryWriter writer = new BinaryWriter(File.Open(@"kinect" + counter + @".stl", FileMode.Create)))
            {

                Helper.SaveBinaryStlMesh(mesh, writer, true, counter, posicionamiento);
            }
            counter++;
            lecturaOK = true;
        }
    }
    catch (Exception ex)
    {
        continue;
    }
}

我重新启动网格值,但是我的程序在等待下一个txt值时卡住了,我的意思是,它只是制作了while循环并且它没有使" mesh = this。 volume.CalculateMesh(1)"指令。我需要等待txt的值而不停止程序的其余部分。

还有其他办法吗?

2 个答案:

答案 0 :(得分:1)

  1. 如果您正在观看不会持续更新的文件,我建议您使用System.IO.FileSystemWatcher课程。

  2. 关于您的评论:

  3.   

    “我的程序在等待下一个txt值时卡住了,我的意思是,它只是制作了while循环并且它不会使mesh = this.volume.CalculateMesh(1)”

    您是否检查过是否最终没有抛出异常并登陆catch区块?

答案 1 :(得分:0)

也许你可以使用Timer,因为while循环非常快且无法控制。如果使用Timer,则将在timer_tick事件中控制代码块。您可以启动和停止代码流并进行简单的代码调试。