2013-03-22 63 views
0
public class HomeController : Controller 
    { 
     public ActionResult Index() 
     { 
      var t1= Test1().Result; 
      return View(); 
     } 

     private async Task<HttpResponseMessage> Test1() 
     { 
      string strUrl = "http://localhost:52033/api/values"; 
      var instanceClient = new HttpClient(); 
      var requestMessage = new HttpRequestMessage(HttpMethod.Get, strUrl); 
      var httpRespons = await instanceClient.SendAsync(requestMessage); 
      return httpRespons; 
     } 
    } 

當我在名爲Test1的Index Action中調用Test1()時。結果;當前線程死鎖程序會發生無響應,不要帶結果調用後綴可以正常運行!在MVC操作中調用任務方法,但當前線程被鎖定

+0

這是個問題嗎? – ElefantPhace 2013-03-22 03:48:35

+0

總之,你想要發生什麼? – 2013-03-28 05:07:33

回答

0

您不應該在ASP.NET上下文中調用ResultWait;其中一個原因是它可能導致死鎖,as I explain on my blog

相反,你應該使用await,像這樣:

public async Task<ActionResult> Index() 
{ 
    var t1 = await Test1(); 
    return View(); 
} 
+0

好!非常感謝你。 – JasonCheng 2013-03-23 02:55:15

相關問題