2013-03-04 3 views
2

Использование HttpContext.Current.Items мы можем получить доступ к переменным из текущего запросаHttpContext.Current.Items в другом потоке

Мой вопрос, что если запрос перемещается в другой поток, мы можем все еще получить доступ к этому?

Если да, то как мы можем получить к нему доступ?

Предполагаю, что это будет исключать исключение ссылки?

Я пытаюсь с кода ниже, но он бросает Null Ref Exception

public partial class WebForm1 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    } 

    protected void BtnClick(object sender, EventArgs e) 
    { 
     HttpContext.Current.Items["txtbox1"] = txtbox1.Value; 
     var t = new Thread(new Threadclas().Datamethod()); 
     t.Start(); 
       } 
} 

public class Threadclas 
{ 
    public void Datamethod() 
    { 
     var dat = HttpContext.Current.Items["txtbox1"]; 
     **//how can i access HttpContext here** ? 
    } 


} 

ответ

3

Вы можете всегда доступ HttpContext.Current.Items из текущего запроса, независимо от того, какой поток ASP.Net решает запустить запрос на ,

Если вы специально задаете вопрос о поведении с асинхронными действиями, среда выполнения ASP.Net будет обрабатывать все проблемы с потоками прозрачно для вас. Для получения дополнительной информации по этой теме, я предлагаю

http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4

+0

Так что, если у меня есть три функции на странице загрузки. Могу ли я создать три потока и вызвать thread-start. И последние присоединяются к нитке? –

+0

@ Шехар: Я бы не предложил вам это сделать. Если вам нужно извлечь внешние ресурсы, используйте модель программирования async, доступную в .NET 4.5 (и см. Ссылку в моем ответе, если вы используете MVC 4). Если вы действительно разворачиваете кучу потоков, а затем присоединяетесь к ним, вы сможете получить доступ к «HttpContext.Current» из других потоков. Имейте в виду, что «HttpContext.Current» по своей сути не является потокобезопасным. См. Http://stackoverflow.com/questions/734821/using-an-httpcontext-across-threads –

+0

Я обновил свой код, который я пытаюсь сделать, любые предложения о том, как заставить его работать – user804401

Смежные вопросы