代码之家  ›  专栏  ›  技术社区  ›  as-cii

Silverlight 4线程问题

  •  1
  • as-cii  · 技术社区  · 14 年前

    最近我在Silverlight中开发了一个使用上载的应用程序。
    我用 WebClient 类与通信 HttpHandler 在我的服务器上。所提供的方法 网络客户端 是异步的,使用基于事件的APM:记住Silverlight的作用域是拥有一个不阻塞我想要的流畅的UI,为了好玩,尝试使调用同步。

    代码

    AutoResetEvent _uploadedEvent = new AutoResetEvent(false);
    
    foreach (var item in _fileInfos)
            {
                WebClient client = new WebClient();
    
                client.OpenWriteCompleted += (sender, e) =>
                {
                    try
                    {
                        using (FileStream fs = item.OpenRead())
                        using (Stream stream = y.Result)
                        {
                            while (true)
                            {
                                byte[] buffer = new byte[8192];
    
                                int readBytes = fs.Read(buffer, 0, buffer.Length);
                                if (readBytes == 0)
                                    break;
    
                                stream.Write(buffer, 0, readBytes);
                            }
                        }
                    }
                    finally
                    {
                        _uploadedEvent.Set();
                    }
                };
    
                client.OpenWriteAsync(new Uri(_receiverUri));
    
                _uploadedEvent.WaitOne();
            }
    

    问题

    这种使调用同步的方法在Silverlight中不起作用,但在WPF中起作用。 现在我注意到我不是唯一有这个问题的人: https://stackoverflow.com/questions/3819650/silverlight-httprequest-thread-problem

    你认为问题出在哪里?

    事先谢谢。
    AS-CII。

    1 回复  |  直到 14 年前
        1
  •  5
  •   Brian    14 年前