"작업 친화적 동기화 컨텍스트 사용"의 의미는 무엇입니까?
asp.net 4.5에 새로운 앱 설정이 있습니다.
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
이와 같은 코드는 asp.net 4.0에서 실행될 수 있습니다.
protected void Button1_Click(object sender, EventArgs e)
{
CallAysnc();
}
public void CallAysnc()
{
AsyncOperation asyncOp = AsyncOperationManager.CreateOperation(Guid.NewGuid().ToString());
WebClient client = new WebClient();
client.DownloadStringCompleted += (object sender, DownloadStringCompletedEventArgs e) =>
{
asyncOp.PostOperationCompleted(CallCompleted, e.Result);
};
client.DownloadStringAsync(new Uri("http://www.google.com"));
}
private void CallCompleted(object args)
{
Response.Write(args.ToString());
}
하지만 asp.net 4.5에서는 작동하지 않고, 새로운 앱 설정을 제거하면 다시 작동합니다!
그렇다면 "작업 친화적인 동기화 컨텍스트 사용"의 의미는 무엇입니까?
에 관하여UseTaskFriendlySynchronizationContext
Microsoft 포럼에서:
이는 ASP.NET에 완전히 새로운 비동기 파이프라인을 사용하도록 지시합니다. 이 파이프라인은 필요할 때 스레드 풀로 스레드를 반환하는 것을 포함하여 비동기 작업을 시작하기 위해 CLR 규칙을 따릅니다. ASP.NET 4.0 이하는 CLR 지침에 위배되는 자체 규칙을 따릅니다.스위치가 활성화되지 않은 경우 비동기 메서드가 동기적으로 실행되거나 요청을 교착 상태로 만들거나 예상대로 동작하지 않는 경우가 매우 쉽습니다.
또한, 제 생각에는AsyncOperationManager
데스크톱 응용 프로그램용입니다.ASP.NET 앱의 경우 사용해야 합니다.RegisterAsyncTask
및 설정<%@ Page Async="true"
자세한 내용은 여기를 참조하십시오.
따라서 새로운 c# 키워드를 사용하는 예는 다음과 같습니다.
protected void Button1_Click(object sender, EventArgs e)
{
RegisterAsyncTask(new PageAsyncTask(CallAysnc));
}
private async Task CallAysnc()
{
var res = await new WebClient().DownloadStringTaskAsync("http://www.google.com");
Response.Write(res);
}
릴리스별로 다음을 지원하는 것이 목적이지만 현재 베타 버전에서는 지원되지 않습니다.
protected async void Button1_Click(object sender, EventArgs e)
{
var res = await new WebClient().DownloadStringTaskAsync("http://www.google.com");
Response.Write(res);
}
MSDN의 appSettings에 대한 ASP.NET 4.5.1 설명서에서 인용한 자세한 내용:
aspnet:작업에 적합한 동기화 컨텍스트 사용
ASP.NET 4.5의 비동기 코드 경로 동작 방식을 지정합니다.
...
이 키 값을 false [default]로 설정하면 ASP.NET 4.5의 비동기 코드 경로가 ASP.NET 4.0에서와 같이 작동합니다.이 키 값을 true로 설정하면 ASP.NET 4.5는 태스크 반환 API에 최적화된 코드 경로를 사용합니다.이 호환성 스위치 설정은 WebSockets 사용 응용프로그램, 웹 양식 페이지에서 태스크 기반 비동기를 사용하는 응용프로그램 및 특정 기타 비동기 동작의 경우 필수입니다.
언급URL : https://stackoverflow.com/questions/9562836/whats-the-meaning-of-usetaskfriendlysynchronizationcontext
'programing' 카테고리의 다른 글
pathlib.path에서 지정된 파일이 있는 폴더 이름을 가져오는 방법은 무엇입니까? (0) | 2023.07.17 |
---|---|
mgo가 삽입된 문서의 ID를 반환하지 않는 이유는 무엇입니까? (0) | 2023.07.17 |
__eq_는 Python에서 어떻게 처리되고 어떤 순서로 처리됩니까? (0) | 2023.07.17 |
Excel 추가 기능 - 클릭 한 번 - VSTOInstaller.exe.config 파일, 무엇입니까? (0) | 2023.07.17 |
aspx 보기에서 '사용' 문을 사용할 수 있습니까?(ASP.NET MVC) (0) | 2023.07.17 |