Powered by MSDN

US - English
NEW! Silverlight 5 is available Learn More

  • XASD

    XASD

    Member

    97 Points

    60 Posts

    BeginGetRequestStream anomaly

    Jun 16, 2008 05:45 PM | LINK

    Following code:
    var r = WebRequest.Create(uri);
    ManualResetEvent re = new ManualResetEvent(false);
    r.BeginGetRequestStream(x =>
                    {
                        re.Set();
                        rs = r.EndGetRequestStream(a_r);
                    }, null);
                    re.WaitOne();
    
    run OK.But this:
    var r = WebRequest.Create(uri);
    ManualResetEvent re = new ManualResetEvent(false);
    r.BeginGetRequestStream(x =>
                    {
                        
                        rs = r.EndGetRequestStream(a_r);
                        re.Set();//change
                    }, null);
                    re.WaitOne();
    
    just hangs forever.
    According to docs x=>{} lambda executed in "worker thread",but in "EndGetRequestStream" we see "AsyncHelper.BeginOnUI->UiSynchronizationContext.Current.Send()" for lambda,so we have deadlock. How understand(and resolve) that statement?

    Thanks.