우리 프로그램이 DLL에서 알 수없는 메서드를 실행하고 있습니다. 경우에 따라 이러한 메서드는 시간 제한을 처리하지 않으며 값을 반환하지 않습니다.시간 초과 후 중단 된 메서드 중단
따라서 우리의 Methodinfo.invoke (...)는이 줄에서 영원히 멈출 것입니다.
Google의 방법을 중단 할 수있는 적절한 방법이 있습니까? 나는이 방법을 비동기 적으로 실행해야하는데, 문제가 없다는 것을 이해한다.
여기의 요청에 따라시각화에 대한 몇 가지 작은 예입니다 : 내가 파일 핸들과 같은이 DLL 내에 할당되어있는 경우 ThreadAbortException
작동하지하려고 할 것이다 주석의 제안으로
public string startTheDLLMethod(int timeout)
{
var methodinfo = "...";
return methodGettingStuck(methodinfo); //todo, abort this after timeout
}
public string methodGettingStuck(methodinfo)
{
var1 = "";
var2 = "";
methodinfo.Invoke(var1, var2); //Stuck.
}
'ThreadAbortException'? [mcve]를 입력하십시오. – dymanoid
['CancellationTokenSource'] (https://msdn.microsoft.com/en-us/library/system.threading.cancellationtokensource (v = vs.110) .aspx)에 대해 자세히 알아보십시오. – Shreevardhan
CancellationTokenSource가 1 줄에 멈추는 동안 CancellationTokenSource가 메소드를 중지 할 수 있다고 주장하십니까? – humudu