2009-08-27 6 views
0

안녕하세요 저는 파일을 옮기고 데이터베이스에 넣을 작은 응용 프로그램을 만들었습니다. 응용 프로그램이 시간 초과를 필요로한다는 것을 제외하면 이것은 잘 작동합니다..net 데스크탑 응용 프로그램에서 시간 초과 설정

내 앱이 2 시간 내에 작업을 완료하지 못하면 모든 항목이 열리고 모든 항목이 잠 깁니다. 내 신청서를 2 시간 동안 열어두면 닫을 수 있습니다.

한 가지 생각은 응용 프로그램에서 시간 제한을 설정할 수 있다는 것입니다. 나는 이것을 위해 google을 가지고 system.threading = 무한과 threading.sleep = 200에 대해 약간의 것들을 발견했지만 실제로 이것을 이해하지는 못한다.

다른 생각은 타이머를 사용하고 최대 2 시간까지 계산 한 다음 닫기 방법을 호출하는 것입니다.이 이음새는 약간의 치트와 같습니다.

모든 아이디어를 C# 또는


VB

중 하나에 아웃 시간에 슬프게도이이 응용 프로그램이 실패하지 어디 DB를 연결 아닙니다.

답변

1

응용 프로그램의 인스턴스 하나만 동시에 실행할 수 있도록 허용하는 방법은 무엇입니까?

스케쥴링을 변경하지 않고 응용 프로그램의 여러 인스턴스를 방지하는 방법으로이 코드를 살펴보십시오.

static void Main(string[] args) 
{ 
    Mutex flag = new Mutex(false, "UNIQUE_NAME"); 
    bool acquired = flag.WaitOne(TimeSpan.FromMilliseconds(0)); // 0 or more milliseconds 
    if (acquired) 
    { 
     Console.WriteLine("Ok, this is the only instance allowed to run."); 

     // do your work, here simulated with a Sleep call 
     Thread.Sleep(TimeSpan.FromSeconds(5)); 

     flag.ReleaseMutex(); 
     Console.WriteLine("Done!"); 
    } 
    else 
    { 
     Console.WriteLine("Another instance is running."); 
    } 
    Console.WriteLine("Press RETURN to close..."); 
    Console.ReadLine(); 
} 

, 당신의 뮤텍스를 포기하지 마십시오 ... ;-)

HTH

0

다른 옵션은 어떻게됩니까? 프로세스가 현재 실행 중인지 여부를 나타내는 플래그를 설정하십시오.

프로세스는 두 번째를 시작하거나 처음을 닫거나 타이머를 설정할 수 있으며, 몇 분 후 다시 확인 후 그나마 실행중인 경우 (?)

+0

이 일할 수있는 응용 프로그램이 전복이이 플래그를 제거하지 않을 그것은 것 실패하면 있지만 뛰지 않는다 – Paul

0

은 아마 DbConnection/DbCommand에 대한 시간 초과가 객체한다 더 적절 (MSDN 살펴보기)

관련 문제