일부 사용자 특정 코드 을 런타임에 컴파일 한 다음 AppDomain 내에서 실행하는 C# 4.0을 사용하여 WPF 응용 프로그램을 개발 중입니다. 프로세스가 10ms 또는 5 분이 걸릴 수 있습니다. AppDomain은 Task.Factory.StartNew()으로 생성됩니다. 잘 작동합니다.CancellationToken.IsCancellationRequested없이 작업을 취소하는 방법?
이제 실행을 취소/중단 할 수 있기를 원합니다. 코드가 실행되는 동안 중지 버튼을 누를 수는 있지만 어떻게 작업을 취소 할 수 있습니까? 나는 알고있다 : 거기에 CancellationToken.IsCancellationRequested 속성이지만 나는 무언가를 통해서 루프를 통과 할 수 없다. 이것은 (원자) 코드 을 실행하는 동안 값을 확인할 수없는 이유입니다. AppDomain을 언로드하면 작업이 중지되지 않습니다.
참고 : 사용하기 쉽기 때문에 작업 클래스를 가져 왔습니다. 스레드이 유용 할 경우 : 아무런 문제가 없습니다.
나를 도와 줄 사람이 있습니까? 짧은 코드가 멋지다. :)
감사합니다.
컴파일 중 System.CodeDom을 사용하고 있습니까? 컴파일을 시작하기 전과 새 AppDomain을로드하고 프록시 개체를 만들기 전에 취소 할 수 있습니다. 나는 CodeDomProvider API가 컴파일 중에 취소를 허용하지 않는다고 생각한다. –