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;
}
}
}
}
}
是这个代码的时间延迟将工作。还是我做错了什么?
我必须说,理解你到底想要达到什么目标有点困难。
发现它是否工作的唯一方法是运行它并针对一组测试用例进行测试。仅仅思考或询问某人是否会像预期的那样工作并不是正确的方法。
如果它符合您的用例,那么在我看来,唯一需要考虑的应该是性能。如果您对性能感到满意(如果它符合您的用例),那么我认为它应该是好的。