c#aspx线程的简单示例

c#aspx线程的简单示例,c#,asp.net,multithreading,C#,Asp.net,Multithreading,我正在搜索一个非常简单的例子,用c#为aspx站点使用threads。为vb.net找到了一些,但无法让它们与c#一起工作 我需要一个线程或后台工作人员,用于我的aspx站点查询数据库,并使用响应的值进行一些计算。这需要很长时间,我想更新我的网站,同时计算通知用户 我用一个ajax更新面板尝试了它,但是得到了一个超时错误(认为计算时间太长)。也尝试过,但得到一个错误,异步线程不允许 那么,有人有一个链接或一个简单的例子吗?谢谢大家! 您可以使用PageAsyncTask类,而不是直接使用线程类。

我正在搜索一个非常简单的例子,用c#为aspx站点使用
threads
。为vb.net找到了一些,但无法让它们与c#一起工作

我需要一个
线程
后台工作人员
,用于我的aspx站点查询数据库,并使用响应的值进行一些计算。这需要很长时间,我想更新我的网站,同时计算通知用户

我用一个
ajax更新面板
尝试了它,但是得到了一个超时错误(认为计算时间太长)。也尝试过,但得到一个错误,异步线程不允许


那么,有人有一个链接或一个简单的例子吗?谢谢大家!

您可以使用PageAsyncTask类,而不是直接使用线程类。以下页面还包括一个示例:

请从asp.net官方网站上阅读此链接,其中还包含代码示例:

对于更高级别的视图:

它不是后台工作程序,而是新的基于异步/等待任务的异步

这是第一篇文章中的同步与异步方法示例

同步示例:

public List<Gizmo> GetGizmos()
{
    var uri = Util.getServiceUri("Gizmos");
    using (WebClient webClient = new WebClient())
    {
        return JsonConvert.DeserializeObject<List<Gizmo>>(
            webClient.DownloadString(uri)
        );
    }
}
公共列表GetGizmos() { var uri=Util.getServiceUri(“Gizmos”); 使用(WebClient WebClient=new WebClient()) { 返回JsonConvert.DeserializeObject( 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>>());
    }
}
public异步任务GetGizmosAsync()
{
var uri=Util.getServiceUri(“Gizmos”);
使用(HttpClient HttpClient=new HttpClient())
{
var response=wait-httpClient.GetAsync(uri);
return(wait response.Content.ReadAsAsync());
}
}
在本例中,这些方法包含在GizmoService类中,它是您的“后端”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());
}
public ActionResult Gizmos()
{
ViewBag.SyncOrAsync=“同步”;
var gizmoService=新的gizmoService();
返回视图(“Gizmos”,gizmosservice.GetGizmos());
}
公共异步任务GizmosAsync()
{
ViewBag.SyncOrAsync=“异步”;
var gizmoService=新的gizmoService();
返回视图(“Gizmos”,等待gizmosservice.GetGizmosAsync());
}