0
我正在試驗MSDN示例。我遇到了以下問題。從按鈕單擊事件處理程序運行async
代碼塊時,使用async
模式,它可以正常工作(button1_Click
)。但是對於button2_Click
,控制不超出TaskObj.Result
。什麼可能是相同的原因?控件在非異步塊中的Task.Result之後不產生
private async void button1_Click(object sender, EventArgs e)//this works fine
{
Task<int> TaskObj = AccessTheWebAsync();
string a ="I came here..";
int y = await TaskObj;
string a1 = "I came here also..";
}
private void button2_Click(object sender, EventArgs e)//this is not working
{
Task<int> TaskObj = AccessTheWebAsync();
string a = "I came here..";//control yielded here
int y = TaskObj.Result;//something happened here
string a1 = "Why I couldn't come here?";//why control is not reaching here?
}
async Task<int> AccessTheWebAsync()
{
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("http://msdn.microsoft.com");
DoIndependentWork();
string urlContents = await getStringTask;
return urlContents.Length;
}
private void DoIndependentWork()
{
IList<Int32>intK = Enumerable.Range(1, 100000000).ToList();
foreach (int x in intK)
{
int y = x * 2;
}
}