我正在寻找几天使用threads
来表示使用c#的aspx网站的简单示例。找到一些用于vb.net但无法使用c#。
我的aspx站点需要thread
或backgroundworker
查询数据库并使用响应值进行一些计算。这需要很长时间,我想在计算时更新我的网站以通知用户。
我尝试使用ajax update panel
但是出现超时错误(认为计算时间太长)。还试过https://msdn.microsoft.com/de-de/library/wkays279.aspx但是得到了一个错误,即不允许异步线程化。
有人有链接或简单的例子吗?谢谢!
答案 0 :(得分:1)
您可以使用PageAsyncTask类,而不是直接使用Thread类。以下页面还包含一个示例:https://msdn.microsoft.com/en-us/library/system.web.ui.pageasynctask.aspx
答案 1 :(得分:1)
从官方asp.net网站上阅读此链接,它也有代码示例:http://www.asp.net/mvc/overview/performance/using-asynchronous-methods-in-aspnet-mvc-4
更高级别的观点:https://msdn.microsoft.com/en-us/magazine/dn802603.aspx
它不是后台工作者,而是新的异步/等待基于任务的异步。
以下是第一篇文章
中的同步与异步方法的示例同步示例:
public List<Gizmo> GetGizmos()
{
var uri = Util.getServiceUri("Gizmos");
using (WebClient webClient = new WebClient())
{
return JsonConvert.DeserializeObject<List<Gizmo>>(
webClient.DownloadString(uri)
);
}
}
与异步:
public async Task<List<Gizmo>> GetGizmosAsync()
{
var uri = Util.getServiceUri("Gizmos");
using (HttpClient httpClient = new HttpClient())
{
var response = await httpClient.GetAsync(uri);
return (await response.Content.ReadAsAsync<List<Gizmo>>());
}
}
在示例中,这些方法包含在GizmoService类中,这是您的&#34;后端&#34; C#。您可以从控制器中调用这些方法,如下所示:
public ActionResult Gizmos()
{
ViewBag.SyncOrAsync = "Synchronous";
var gizmoService = new GizmoService();
return View("Gizmos", gizmoService.GetGizmos());
}
public async Task<ActionResult> GizmosAsync()
{
ViewBag.SyncOrAsync = "Asynchronous";
var gizmoService = new GizmoService();
return View("Gizmos", await gizmoService.GetGizmosAsync());
}