2011-02-27 77 views
1

我在Silverlight Business Application項目和一個域服務中有幾個視圖。RIA服務中的事件

從第一個角度來看,我希望能夠在服務上調用一個簡單的方法。 在服務上,我希望能夠在調用此方法時引發事件。在我的第二個視圖中,我想爲該服務上的此事件創建一個事件處理程序。

到目前爲止,我有這樣的服務

public class MyService: DomainService 
{ 
    public event EventHandler<EventArgs> MyEvent; 

    public void SimulateSomeAction() 
    { 
     if(MyEvent!= null) 
     { 
      MyEvent(this, EventArgs.Empty); 
     } 
    } 
} 

而在第一種觀點,我有

private void button1_Click(object sender, RoutedEventArgs e) 
{ 
    MyServiceContext context = new MyServiceContext(); 
    context.SimulateSomeAction(); 
} 

但對於第二種觀點,我沒有看到的事件被暴露被處理。如果這是錯誤的方法,這怎麼能實現呢?我正在尋找一些方法來更新由服務啓動的客戶端視圖。

編輯:

我提到的兩個意見將在不同的客戶端。基本上我正在通過域名服務尋找客戶端到客戶端的通信解決方案。如果試圖通過域名服務來做是一個壞主意或不可能,請建議我應該看什麼。

目前正在研究"Pushing Data to a Silverlight Client with a WCF Duplex Service",但如果RIA服務可能的話,會很喜歡它。

謝謝

回答

1

您正在尋找的功能目前在RIA Services Wish List頂部請求。據我所知,人們已經成功地使用WCF雙工服務,但我還沒有看到一個例子。

0

這些代碼片段是否準確?

我看不出您的第一個視圖是如何看到模擬方法的。

如果您想爲生成的上下文或模型添加功能,請查看使用部分類。 所以在Silverlight項目添加一個類像


namespace MyProject.Web.Services { 
    public partial class MyContext { 
    // Add new methods, events etc here 
    } 
} 
+0

片段相當準確。我已經用MyEvent等項目替換了實際的名稱,這就是RIA Domain服務的工作方式。您將功能添加到服務中,客戶端將上下文實例作爲代理。 – 2011-02-28 01:06:26

+0

因此您在服務器項目中添加了該事件? – 2011-02-28 01:08:24

+0

是的,這是正確的。 – 2011-02-28 01:09:48