while循环中的时间延迟

时间:2014-05-09 08:17:56

标签: c# time locking delay

我有一个c#多线程应用程序,它启动一个外部exe文件。在我的启动代码中,此启动线程正在调用两次,有时外部exe文件的两个实例正在启动。要在启动方法中摆脱这种应用的锁定机制,也会在启动时增加时间延迟。就像在一个while循环中给出5毫秒的时间延迟,具有顶级切断时间。如果发现这个过程打破了循环。并增加顶级切断。如果顶级切断达到5秒仍然没有找到exe,那么打破循环。 以下是我的代码。

int count = 1000;
lock (locker)
                {
 Process[] pname = Process.GetProcessesByName("MyApp");
if (pname.Length == 0)
{
----
 process = new System.Diagnostics.Process();
                        process.StartInfo = psi;
process.Start(); 

            while (true)
            {
                //find TG proceess
                pname = Process.GetProcessesByName("MyApp");

                //if found exit from loop
                if (pname.Length >= 1)
                {
                    Console.WriteLine("Found");
                    break;
                }
                else
                {
                    //give 5 sec delay
                    System.Threading.Thread.Sleep(10);
                    count = count + 10;

                    if (count >=5000)
                    {
                        Console.WriteLine("Not Found");
                        break;
                    }
                }  
            }
}
}

此延迟代码是否有效。或者我做错了什么。

1 个答案:

答案 0 :(得分:0)

我必须说明白你正在努力实现的目标有点困难。

找出它是否可行的唯一方法是运行它并针对一组测试用例进行测试。只是思考或问某人是否能按预期工作是不正确的方法。

如果它符合您的使用案例,则只有其他考虑因素IMO应该是性能。如果您对性能感到满意(如果它符合您的用例),那么我认为它应该是好的。

希望这有帮助。