Có một thiết lập ứng dụng mới trong asp.net 4,5Ý nghĩa của "UseTaskFriendlySynchronizationContext" là gì?
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
mã như thế này có thể chạy trong 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());
}
Nhưng nó không hoạt động trong asp.net 4.5, và khi tôi xóa ứng dụng mới, nó hoạt động trở lại!
Vậy ý nghĩa của "UseTaskFriendlySynchronizationContext" là gì?
Tôi đã sử dụng mã đích và hoạt động tốt. Làm thế nào để biết nó hiện không được hỗ trợ? Tình huống nào không hỗ trợ? – Dozer
@Dozer, tôi đoán bạn không có UseTaskFriendlySynchronizationContext được đặt thành true? Tôi nhận được một lỗi về Phản hồi không có sẵn (dễ dàng để giải quyết nhưng không phải nếu điều khiển bạn không thể thay đổi được mã hóa để truy cập vào nó).Nếu bạn theo liên kết đó đến Diễn đàn Microsoft, bạn có thể đọc về một số vấn đề tôi có và nhận xét về nó không được nhân viên của Microsoft hỗ trợ. Tôi có ấn tượng rằng nó không tự động cắm vào RegisterAsyncTask nhưng do các vấn đề (không biết cái gì, nhưng bạn có thể hỏi trong diễn đàn đó) và nếu không thì bạn sẽ không nhận được lợi ích nào khi chạy nó một cách đồng bộ. – Michael
Câu trả lời trong MSDN cho biết: "Trong ví dụ cụ thể của bạn, có một phương thức void async mà không cần thiết lập công tắc thực sự giới thiệu một điều kiện chủng tộc trong Trang của bạn, mà phương thức DataBind() không được đảm bảo để được gọi trước khi Trang thực sự được hiển thị và đầu ra của nó được gửi tới máy khách ". Nhưng tôi đã thử nó và trang luôn hiển thị sau phương thức DataBind(). –
Dozer