Я новичок в асинхронном программировании
Я прочитал статью о чате на node.js и попытался добиться чего-то похожего с асинхронным контроллером asp.net mvc
public void RecieveAsync()
{
var list = (List<AsyncCallback>)HttpContext.Application["callbacks"];
var tt = new AsyncCallback((message) =>
{
AsyncManager.Parameters["result"] = message;
});
list.Add(tt);
HttpContext.Application["callbacks"]=list;
while(!AsyncManager.Parameters.ContainsKey("result"))
{
System.Threading.Thread.Sleep(500);
}
}
public JsonResult RecieveCompleted(Message result)
{
var a = new { name = result.name, result.message };
return Json(a, JsonRequestBehavior.AllowGet);
}
public void SendAsync(Message _message)
{
Dictionary<string,object> dict= new Dictionary<string,object>();
var list = (List<AsyncCallback>)HttpContext.Application["callbacks"];
foreach (var elem in list)
{
elem.Invoke(_message);
}
HttpContext.Application["callbacks"] = new List<AsyncCallback>();
dict.Add("ok",true);
AsyncManager.Parameters["result"] = dict;
}
public JsonResult SendCompleted(object result)
{
return Json(result, JsonRequestBehavior.AllowGet);
}
он работает, но все еще с этой строкой:
while(!AsyncManager.Parameters.ContainsKey("result"))
{
System.Threading.Thread.Sleep(500);
}
это не совсем асинхронно, что еще я могу сделать, как я могу достичь этого без сна и сделать мой код более понятным с той же логикой?