2015-03-04 7 views
0

Я ищу дни очень простой пример использования threads для сайтов aspx с C#. Найденные для vb.net, но не могут заставить их работать с C#.Простой пример для C# aspx threading

Мне нужен thread или backgroundworker для моего сайта aspx с запросами базы данных и выполнить некоторые вычисления с ответами. Это занимает очень много времени, и я хочу обновить свой сайт при расчете, чтобы сообщить пользователю.

Я пробовал его с помощью ajax update panel, но получаю ошибку тайм-аута (думаю, расчет занимает слишком много времени). Также попробовал https://msdn.microsoft.com/de-de/library/wkays279.aspx, но получаю сообщение об ошибке, что асинхронная потоковая передача не разрешена.

У кого-то есть ссылка или простой пример? Спасибо!

ответ

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, который является вашим «задним концом» 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()); 
} 
Смежные вопросы