CultureInfo가 스레드에서 스레드로 복사되지 않기 때문에 다음과 같은 방법으로 해당 작업을 수행했습니다. 기본적으로사용자 지정 작업 실행 메서드가 ArgumentException을 throw합니다.
public static StartCustomTask(Action action, TaskCreationOptions tco = TaskCreationOptions.None)
{
var currentCult = Thread.CurrentThread.CurrentCuture;
var currentUiCult = Thread.CurrentThread.CurrentUICulture;
return Task.Factory.StartNew(() =>
{
Thread.CurrentThread.CurrentCuture = currentCult;
Thread.CurrentThread.CurrentUICulture = currentUiCult;
action();
}, tco);
}
거 야 action
을 실행하는 스레드 현재 스레드에서이 코드를 복사 문화 정보. 이유는 모르지만 System.ArgumentException
은 Value does not fall within the expected range
입니다. 나는 메인 스레드에서 액션 자체를 정기적으로 실행하려고 시도했으며 완벽하게 진행됩니다. 그 말은, 액션 인 그 메소드 자체에 문제가 없다는 것입니다. 위의 코드에서 어딘가에 문제가 있습니다. 여기
at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo)
at System.Web.Hosting.IIS7WorkerRequest.GetServerVariableInternal(String name)
at System.Web.HttpRequest.BuildUrl(Func`1 pathAccessor)
at System.Web.HttpRequest.get_Url()
at SL.CoreLogic.Web.FrontEnd.Controllers.AccountController.<>c__DisplayClass37.<ResetPassword>b__31() in d:\CoreProjects\CoreLogic\CoreLogic-RusSlot\SL.CoreLogic\SL.CoreLogic.Web.FrontEnd\Controllers\AccountController.cs:line 447
at SL.CoreLogic.Common.CustomTask.<>c__DisplayClass1.<StartWithCurrentCulture>b__0() in d:\CoreProjects\CoreLogic\CoreLogic-RusSlot\SL.CoreLogic\SL.CoreLogic.Common\CustomTask.cs:line 22
at System.Threading.Tasks.Task.
그리고 한 가지 더의 스택 추적입니다. 이 코드는 완벽하게 작동하지만 갑자기이 작업을 시작했습니다.
나는 문제가 보이지 않는다. 그것은 나를 위해 일하고있다. 당신이 지나가고있는 행동에는 무엇이 있습니까? – DavidG
그것은이 doThing (새로운 Obj (/ 구성 속성))을 실행하면 괜찮아 보이지만 작동하는 경우 이것은 Action() => doThing (새 Obj {// 구성 속성})) 형식의 익명 메서드입니다. 이 이상한 일을하기 시작하는 행동으로이 방법을이 방법에 전달합니다. – Dimitri
어떤 줄에 오류가 발생합니까? – DavidG