我有一个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;
}
}
}
}
}
此延迟代码是否有效。或者我做错了什么。
答案 0 :(得分:0)
我必须说明白你正在努力实现的目标有点困难。
找出它是否可行的唯一方法是运行它并针对一组测试用例进行测试。只是思考或问某人是否能按预期工作是不正确的方法。
如果它符合您的使用案例,则只有其他考虑因素IMO应该是性能。如果您对性能感到满意(如果它符合您的用例),那么我认为它应该是好的。
希望这有帮助。