사용자 정의 인증 (즉, 중간 계층/서버가 인증을 관리)과 함께 CSLA 프레임 워크를 사용하는 Winforms 앱에서 작업 중이며 세션 시간 초과 기능을 구현하는 중입니다.Winforms 메인 UI 스레드 프린시 펄이 이전 버전으로 되 돌림
내가 겪고있는 문제는 교장에게 이상한 문제입니다. 세션 시간 초과 후 로그인 할 때 새로운 Principal 객체 (사용자 정의 Principal 객체)를 만듭니다. 이것은 항상 UI 스레드 인 현재 스레드에 할당됩니다 (UI 스레드에서 로그인 폼이 실행되도록하려면 Control.Invoke를 선택하고이 폼의 클릭 이벤트는 UI 스레드에서 실행 됨) .
그러나이 후에 UI에서 버튼을 클릭하면 주체가 OLD 교장으로 되돌아 갔음을 알 수 있습니다.
주 UI 스레드가 이전 주체로 되돌릴 수있는 이유가 있습니까?
주 UI 스레드에서 주체를 피할 수있는 알려진 문제가 있습니까?
나는 체크하고 Thread.CurrentPrincipal을 다른 곳에서는 설정하지 않을 것이다.
내 세션 타임 아웃을 트리거 할 Windows.Forms.Timer
로 변경보다는 이전에 나는 System.Timers.Timer
을 사용 한 후 필요한 Control.Invoke
를 사용하여이 문제를 해결 한
UPDATE. 이 값을 변경하면 다음에 UI 스레드에서 실행될 때 UI 스레드에서 설정 한 주체가 그대로 남아 있습니다.
는는 사람이 설명 할 수 ? 그래서 본질적으로 UI 스레드에서 Principal을 설정하는 것은 두 가지 다른 것을 의미 할 수 있습니다 ... 설정 할 때 필요한 확실한 컨텍스트가 있습니까?
내가 같은 문제로 보이는 가진 다른 사람들의 몇 가지를 발견했습니다...
http://permalink.gmane.org/gmane.comp.windows.devel.dotnet.advanced/14046 https://groups.google.com/forum/#!topic/microsoft.public.dotnet.languages.csharp/_hLhcDB3jHA