相关疑难解决方法(0)

ManualResetEvent不适用于WCF和silverlight

可能重复:
为什么ManualResetEvent无法在使用Silverlight 4的同步调用中工作?

我在MainPage.Xaml.cs中有一个以下代码

 ManualResetEvent wait = new ManualResetEvent(false);
 Service1Client wcf = new Service1Client();
 wcf.DoWorkCompleted += (o, ev) =>
 {
   int s = (int)ev.Result;
   wait.Set();
 };
 wcf.DoWorkAsync();
 wait.WaitOne();

//My other part of code where I'd like the value of `int s`.
....
Run Code Online (Sandbox Code Playgroud)

Service1.svc.cs的代码如下.

public class Service1 : IService1
{
  public int DoWork()
  {
    return 5;
  }
}
Run Code Online (Sandbox Code Playgroud)

直到DoWork完成我希望我的代码等待,所以我写了这段代码.虽然在WaitOne指令(Service1.svc.cs)之后DoWork()根本不会被调用.申请将留在那里只是没有做任何事情.我之前在SilverLight 4中的另一台机器上工作过,它按预期工作.现在我正在使用SilverLight 3.

c# silverlight wcf multithreading

6
推荐指数
1
解决办法
469
查看次数

如何在SIlverlight中实现对WCF服务的同步调用?

有时我需要在Silverlight中调用WCF服务并阻止UI直到它返回.当然,我可以分三步完成:

  1. 设置处理程序和阻止UI
  2. 致电服务
  3. 一切都完成后取消阻止UI.

但是,我想将DoSomethingSync方法添加到服务客户端类,只需在需要时调用它.

可能吗?有没有人真正实现过这样的方法?

更新: 看起来答案根本不是使用同步调用.将为异步调用寻找一些易于使用的模式.看一下这篇文章(摘自评论)了解更多信息.

c# silverlight wcf synchronous

2
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×2

silverlight ×2

wcf ×2

multithreading ×1

synchronous ×1