I am trying to perform a non-CPU bound operation in an asynchronous fashion
using 'Thread' and a delegate. Basically, I am spawning a thread using
ThreadStart and Thread.
My non-CPU bound operation needs to have access to Session variables; Even
though I embedded the state information (which also includes the context
object) in an object and passed the object to the Thread , I am unable to
access the Session variables. The system throws a Null Object Reference error.
Since the thread that I am spawning is not from the CLR thread pool, it is
not able to access the Session variable. Am I right? How can a system thread
get access to the Session variables of the current HTTPRequest?
I hope I articulated my problem. If not, please let me know.
Any pointers will be appreciated!This example ( albiet in Visual Basic.NET ) seems to work ok. Im not sure
what you are doing differently , or if I have misunderstood you ?
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim myThread As New Threading.Thread(AddressOf mySpawned)
Session("TestMe") = "Hello World"
myThread.Start()
End Sub
Private Sub mySpawned()
Dim s As String = Session("TestMe")
End Sub
"Diffident" <Diffident@.discussions.microsoft.comwrote in message
news:32A19AC0-DB0F-4120-8BF6-4E1539BEB0B7@.microsoft.com...
Quote:
Originally Posted by
Hi All,
>
I am trying to perform a non-CPU bound operation in an asynchronous
fashion
using 'Thread' and a delegate. Basically, I am spawning a thread using
ThreadStart and Thread.
>
My non-CPU bound operation needs to have access to Session variables; Even
though I embedded the state information (which also includes the context
object) in an object and passed the object to the Thread , I am unable to
access the Session variables. The system throws a Null Object Reference
error.
>
Since the thread that I am spawning is not from the CLR thread pool, it is
not able to access the Session variable. Am I right? How can a system
thread
get access to the Session variables of the current HTTPRequest?
>
I hope I articulated my problem. If not, please let me know.
>
Any pointers will be appreciated!
>
>
Hi OHM,
Thanks for your response.
Here is what I am trying to do (in C#):
=====
ThreadStart t = new ThreadStart(LongDBProcess)
// LongDBProcess is a time-consuming process
Thread ts = new Thread(t);
t.start(); //At this point, system thread will be created and not
the CLR thread
====
I need to have access to Session variables inside my LongDBProcess...
private void LongDBProcess()
{
Session["IDCounter"] = i+1; //At this point, I am getting null
reference
}
If I am correct, the thread is not able to access the session. Probably this
thread's scope is outside the Application Domain whereas the session data
will be inside the Application Domain...am I correct?
Thanks for your pointers.
"OHM" wrote:
Quote:
Originally Posted by
This example ( albiet in Visual Basic.NET ) seems to work ok. Im not sure
what you are doing differently , or if I have misunderstood you ?
>
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
>
Dim myThread As New Threading.Thread(AddressOf mySpawned)
>
Session("TestMe") = "Hello World"
>
myThread.Start()
>
End Sub
>
>
Private Sub mySpawned()
>
Dim s As String = Session("TestMe")
>
End Sub
>
>
>
>
>
"Diffident" <Diffident@.discussions.microsoft.comwrote in message
news:32A19AC0-DB0F-4120-8BF6-4E1539BEB0B7@.microsoft.com...
Quote:
Originally Posted by
Hi All,
I am trying to perform a non-CPU bound operation in an asynchronous
fashion
using 'Thread' and a delegate. Basically, I am spawning a thread using
ThreadStart and Thread.
My non-CPU bound operation needs to have access to Session variables; Even
though I embedded the state information (which also includes the context
object) in an object and passed the object to the Thread , I am unable to
access the Session variables. The system throws a Null Object Reference
error.
Since the thread that I am spawning is not from the CLR thread pool, it is
not able to access the Session variable. Am I right? How can a system
thread
get access to the Session variables of the current HTTPRequest?
I hope I articulated my problem. If not, please let me know.
Any pointers will be appreciated!
>
>
>
Hmm, not sure on this one. If you can do it with vb.net you should be able
to do it somehow with C#, but I cant get it to work either. The delegate is
obviously working ok, but it seems to have lost its connection to the
context.
I think its probably the way the thread has been started, but I dont
normally do that much with threading It's not something which rattles off
the tip of my head.
My suggestion is to repost this question on the C# newsgroup, someone there
is bound to have an answer pretty quick.
"Diffident" <Diffident@.discussions.microsoft.comwrote in message
news:92659A98-C334-4834-B95B-E74F14878594@.microsoft.com...
Quote:
Originally Posted by
Hi OHM,
>
Thanks for your response.
>
Here is what I am trying to do (in C#):
>
=====
>
ThreadStart t = new ThreadStart(LongDBProcess)
// LongDBProcess is a time-consuming process
Thread ts = new Thread(t);
t.start(); //At this point, system thread will be created and not
the CLR thread
>
====
>
I need to have access to Session variables inside my LongDBProcess...
>
private void LongDBProcess()
{
Session["IDCounter"] = i+1; //At this point, I am getting
null
reference
}
>
If I am correct, the thread is not able to access the session. Probably
this
thread's scope is outside the Application Domain whereas the session data
will be inside the Application Domain...am I correct?
>
Thanks for your pointers.
>
"OHM" wrote:
>
Quote:
Originally Posted by
>This example ( albiet in Visual Basic.NET ) seems to work ok. Im not sure
>what you are doing differently , or if I have misunderstood you ?
>>
>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
>System.EventArgs) Handles MyBase.Load
>>
> Dim myThread As New Threading.Thread(AddressOf mySpawned)
>>
> Session("TestMe") = "Hello World"
>>
> myThread.Start()
>>
> End Sub
>>
>>
> Private Sub mySpawned()
>>
> Dim s As String = Session("TestMe")
>>
> End Sub
>>
>>
>>
>>
>>
>"Diffident" <Diffident@.discussions.microsoft.comwrote in message
>news:32A19AC0-DB0F-4120-8BF6-4E1539BEB0B7@.microsoft.com...
Quote:
Originally Posted by
Hi All,
>
I am trying to perform a non-CPU bound operation in an asynchronous
fashion
using 'Thread' and a delegate. Basically, I am spawning a thread using
ThreadStart and Thread.
>
My non-CPU bound operation needs to have access to Session variables;
Even
though I embedded the state information (which also includes the
context
object) in an object and passed the object to the Thread , I am unable
to
access the Session variables. The system throws a Null Object Reference
error.
>
Since the thread that I am spawning is not from the CLR thread pool, it
is
not able to access the Session variable. Am I right? How can a system
thread
get access to the Session variables of the current HTTPRequest?
>
I hope I articulated my problem. If not, please let me know.
>
Any pointers will be appreciated!
>
>
>>
>>
>>
You want to use Asynchronous calls here, either with a Delegate, or using the
2.0 version, the Page class supports Asynchronous page methods and the
context can be passed.
Here is an example article that covers some of this:
http://www.eggheadcafe.com/articles/20060918.asp
Peter
--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com
"Diffident" wrote:
Quote:
Originally Posted by
Hi All,
>
I am trying to perform a non-CPU bound operation in an asynchronous fashion
using 'Thread' and a delegate. Basically, I am spawning a thread using
ThreadStart and Thread.
>
My non-CPU bound operation needs to have access to Session variables; Even
though I embedded the state information (which also includes the context
object) in an object and passed the object to the Thread , I am unable to
access the Session variables. The system throws a Null Object Reference error.
>
Since the thread that I am spawning is not from the CLR thread pool, it is
not able to access the Session variable. Am I right? How can a system thread
get access to the Session variables of the current HTTPRequest?
>
I hope I articulated my problem. If not, please let me know.
>
Any pointers will be appreciated!
>
>
0 comments:
Post a Comment