현재 .NET C# 4.0에서 작업 중이며 일부 두통을 유발하는 일부 코드 문제가 발생했습니다.System.Threading.ThreadAbortException이 새 스레드에서 발생했습니다.
System.Threading.Tasks.TaskFactory 클래스를 System.Threading.Tasks.TaskScheduler와 함께 사용하여 콘솔 응용 프로그램에서 새 스레드를 시작합니다. 여기서 스레드의 기능은 항목이 추가되었는지 확인하는 것입니다. 대기열로. 항목이 대기열에 추가되면 처리됩니다.
그래서 큐에는 보낼 전자 메일이 포함되어 있으며 전자 메일이 큐에 추가되면 전자 메일은 여러 클라이언트를 통해 전송됩니다. 각각에 보내는 것은 병렬로 수행됩니다. 코드 최적화 또는 때문에
가 는 [System.Threading.ThreadAbortException] = {표현식을 평가할 수없는 네이티브 프레임이:
는 I는 다음과 같은 예외가 새로운 스레드의 시간의 몇몇 발생이 간헐적 문제가 }디버깅 할 때 스택의 모든 속성에 "코드가 최적화되었거나 기본 프레임이 호출의 최상위에 있기 때문에 표현식을 평가할 수 없습니다."라는 추가 정보를 얻을 수 없습니다. 스택."
인터넷에서 해결책을 찾고 있는데,이 문제는 response.redirect를 할 때 발생하지만 내 코드에서는이를 수행하지 않는 것으로 나타났습니다. 디버깅을 시도하면이 오류가 발생한 위치와 일관성이 없습니다.
this.taskFactory = new TaskFactory(TaskScheduler.Current);
this.taskFactory.StartNew(this.DequeueMessage, state, TaskCreationOptions.LongRunning);
이 사람이 어떻게 내가이 오류와에 관한 어떤 조언을 받고있을 수 있습니다 이유에 어떤 포인터
을 고정 할 수 있습니다 : 코드는 내가 공장을 만드는 데 사용할 새 스레드를 시작한다 다음은?
웹 앱에서 할 일 목록을 만들고 있습니까? 그렇다면 아마도 AppDomain이 재활용되고있는 것을 볼 수 있습니다. 해결 방법은 백그라운드 스레드를 Windows 서비스로 이동하는 것입니다. –
Visual Studio에서 실행중인 간단한 통합 테스트에서이 동작이 나타납니다. 또한 콘솔 응용 프로그램에서 동일한 코드를 실행할 때 동일한 동작을 참조하십시오. – amateur