2
返回我在ASP.NET MVC應用程序以下示例代碼。 我根本無法獲取數據。換句話說,即使我正在等待任務完成,沒有任何事情發生,控制也不會返回到索引操作。 我錯過了什麼?異步伺機不是在所有(.NET 4.5)
public class HomeController : Controller
{
//
// GET: /Home/
public async Task<ActionResult> Index()
{
Task<string> getContentsTask = GetContentsAsync();
string contents = await getContentsTask;
return Content("ssss");
}
async Task<string> GetContentsAsync()
{
int sample = 0;
HttpClient client = new HttpClient();
Task<string> contents = client.GetStringAsync("http://www.msdn.com");
string data = await contents;
return data;
}
}
在控制檯應用程序嘗試這樣做,即使在這個應用一旦退出,因爲我稱爲第一的await。
class Program
{
static void Main(string[] args)
{
GetContents();
}
public static async void GetContents()
{
Task<string> newTask = GetContentsAsync();
string contents = await newTask;
Console.WriteLine(contents);
Console.ReadLine();
}
public static async Task<string> GetContentsAsync()
{
HttpClient client = new HttpClient();
Task<string> getStringTask = client.GetStringAsync("http://www.msdn.com");
string content = await getStringTask;
return content;
}
}
當我給一個Thread.sleep代碼(8000);那麼這工作正常。電話正常返回。
Task<string> getContentsTask = GetContentsAsync();
Thread.Sleep(10000);
string contents = await getContentsTask;
我相信你做的創建任務和的await之間的什麼東西?否則整個事情有點無意義? – Liam
'Index()'返回一個'Task'。那麼'返回Content(「ssss」);'做什麼? –
我只是通過異步學習我的方式並等待。應用程序不會執行任何操作。 – ckv