2014-05-09 216 views
-1

我有一个c#多线程应用程序,它启动一个外部exe文件。在我的启动代码中,此启动线程正在调用两次,有时外部exe文件的两个实例正在启动。为了在发射方法中摆脱这种应用的锁定机制,还在发射中增加时间延迟。就像在while循环中给予5毫秒的时间延迟一样,并且具有最高级别的关闭时间。如果发现这个过程打破了循环。并增加最高级别中断。如果最高级别切断达到5秒,但仍未找到exe,则断开循环。 以下是我的代码。while循环中的时间延迟

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

我必须说,理解你准确实现的目标有点困难。

找出它是否可行的唯一方法是运行它并根据一组测试用例进行测试。只是想想或问问某人,如果它能按预期工作并不是正确的做法。

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

希望这会有所帮助。