나는 내 스레드 문화를 설정하는 내 기본 컨트롤러의 OnActionExecuting()
메소드를 오버라이드 (override) MVC 응용 프로그램을 문화권을 수정 한 스레드를 스레드 풀로 반환하면 비동기 작업이 완료 될 때 새 스레드가 전달됩니다. 내가 알아야 할 문제가 있니?비동기 및 스레드 문화
답변
주요 잡았다는 await task.ConfigureAwait(false)
패턴을 사용하여 될 수는있는 교착 상태에 대한 쉬운 (그러나 잘못된) 구제 수단으로 종종 오용됩니다. 이 방법은 동기화 컨텍스트없이 풀 스레드에서 계속됩니다. 이 경우 it doesn't get flowed as a part of ExecutionContext
이므로 CurrentCulture
이 전송되지 않습니다. 더 나쁜 것은 Task.Run(lambda)
(일반적으로 ASP.NET 응용 프로그램에 있어서는 안 됨)을 사용하는 것입니다. lambda
안에있는 코드는 올바른 CurrentCulture
이 아닙니다.
그렇지 않으면 AspNetSynchronizationContext
은 다른 스레드에서 발생하더라도 await
연속으로 정확히 CurrentCulture
을 전달합니다.
오랜 시간 아니 참조 :) –
@ YuvalItzchakov, 참으로 :) 내 신생아 하나 내가 그와 함께보다 더 놀아 야한다고 주장 : – Noseratio
축하해! 확실히 우선 순위 변경자;) –
요컨대 ASP.NET은 SynchronizationContext
을 통해 비동기 작업에서 문화권 같은 것을 흐르게 구성됩니다. 당신은 MSDN에서 어떻게 작동하는지에 대해 조금 읽을 수 있습니다 https://msdn.microsoft.com/en-us/magazine/gg598924.aspx
이 SO 질문에 대한 읽을 수있는 정체성에 관련된 몇 개는있다 : Using ASP.NET Web API, my ExecutionContext isn't flowing in async actions
- 1. VB6에서 스레드 문화 설정
- 2. 비동기/대기 스레드 및 크로스 스레드 예외
- 3. 비동기 메서드 및 스레드 정보
- 4. 얼랑 IO 및 비동기 스레드
- 5. SharePoint 2007 강제 문화 및 UI 문화
- 6. 스레드, UI 스레드, 작업자 스레드, 비동기 작업
- 7. 성능 : 비동기 대 스레드
- 8. 부스트 비동기 소켓 및 부스트 :: 스레드
- 9. 노드 js 비동기 함수 및 스레드
- 10. 부스트, 예외, 스레드 및 비동기, 어떻게 처리해야합니까?
- 11. 비동기 스레드 수명 및 WPF UI 업데이트
- 12. 파이썬 비동기 스레드/프로세스
- 13. .NET Threadpool 작업자 스레드 및 비동기 IO 스레드
- 14. 스레드 이해 + 비동기
- 15. 기본 문화
- 16. 비동기 대리자 대 스레드
- 17. multithreading - 클래스의 비동기 스레드
- 18. 비동기 스레드 용 pthread_join()
- 19. 비동기 스레드 역학
- 20. Android : 비동기 스레드 문제
- 21. 비동기 요청의 스레드 상태
- 22. 비동기 백그라운드 스레드 WebServices
- 23. VC++ - 비동기 스레드
- 24. 다중 스레드 비동기 패턴
- 25. 비동기/대기 스레드 대
- 26. 비동기 멀티 스레드
- 27. 닷넷 및 자바 문화 코드
- 28. C# 및 날짜 문화 문제
- 29. 스레드 데이터에 비동기 이미지 문제
- 30. 비동기 메서드와 스레드 대기 사용
그 스레드가 처리중인 다음 요청은'OnActionExecuting'을 통해 이동하지 않습니까? –
@ LasseV.Karlsen 각 요청은'OnActionExecuting'을 실행해야하지만, 각 요청은 다중 스레드에 의해 서비스 될 수 없습니까? 내 데이터 액세스 계층에서 비동기 모델을 사용하여 데이터베이스와 통신하는 경우 요청 과정에서 두 개의 개별 스레드 (문화권이 수정 된 위치, 그렇지 않은 위치)를 얻을 수 있습니까? –
그건 가능해, 이것에 대해 충분히 알지 못해, 미안. NET 4.5를 사용하고 계신가요? 그렇다면 [CultureInfo.DefaultThreadCurrentCulture] (https://msdn.microsoft.com/en-us/library/system.globalization.cultureinfo.defaultthreadcurrentculture%28v=vs.110%29.aspx)를보십시오 –