while循环中的时间延迟

本文关键字:时间延迟 循环 while | 更新日期: 2023-09-27 18:02:26

我有一个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;
                    }
                }  
            }
}
}

是这个代码的时间延迟将工作。还是我做错了什么?

while循环中的时间延迟

我必须说,理解你到底想要达到什么目标有点困难。

发现它是否工作的唯一方法是运行它并针对一组测试用例进行测试。仅仅思考或询问某人是否会像预期的那样工作并不是正确的方法。

如果它符合您的用例,那么在我看来,唯一需要考虑的应该是性能。如果您对性能感到满意(如果它符合您的用例),那么我认为它应该是好的。