2016-11-25 4 views
0

일부 정보를 읽고 결과를 반환하는 프로세스를 수행해야합니다. 유감스럽게도 이벤트에서 결과의 기반을 읽기 위해 사용하는 라이브러리가 필요합니다. 결과를 얻으십시오. 다음 코드를 작성하고 완벽하게 작동하지만 시간이 증가하면 예외를 throw하는 시간 초과를 구현해야하며이 시간은 다른 판독 값에 대해 다를 수 있습니다.가장 좋은 방법은 C#에서 독서 과정에서 시간 제한을 구현하는 것입니다.

public class Process 
{ 
    private readonly Reader _reader; 

    public Process() 
    { 
     _reader = new Reader(); 
    } 

    public string Read() 
    { 
     string result = null; 

     ReadEventHandler handler = (sender, e) => 
     { 
      if (!IsDataValid(e.Data)) return; 

      result = e.Data; 
     }; 

     _reader.OnRead += handler; 

     while (result == null) 
     { 
      _reader.Read(); 
      Thread.Sleep(1000); 
     } 

     _reader.OnRead -= handler; 

     return result; 
    } 

    private bool IsDataValid(string data) 
    { 
     //Here I will evaluate the info returned by the reader 
     return true; 
    } 
} 

답변

0

왜 작업을 사용하지 않고 시간 제한을 설정합니까? 이 링크를 확인하십시오 : https://blogs.msdn.microsoft.com/pfxteam/2011/11/10/crafting-a-task-timeoutafter-method/

+0

죄송합니다, 나는 말하지 않았지만 .net 3.5에 있으므로 작업이 아직 존재하지 않았습니다. –

+0

오, 알았어 ... 그럼이 질문을 참조하십시오, 아마도 도움이됩니다 :) http://stackoverflow.com/questions/299198/implement-c-sharp-generic-timeout –