我正在寫需要一個「雙」 UI程序的WCF服務器端的方法:第一種是經典的Windows窗體,第二個通過Windows電話設備。我正在使用WCF(異步,這種設備的唯一可能性),但是我的行爲對我來說顯得很奇怪。那麼,我對WCF非常基本,所以也許我做錯了什麼。我寫的我的WCF服務器代碼簡化版本,所以這裏的問題是清晰的:不同的行爲,呼籲通過它的WinForm或通過WCF
[ServiceContract]
public partial class Form2 : Form
{
int x = 0;
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
prova1();
}
private void button2_Click(object sender, EventArgs e)
{
x++;
}
[OperationContract]
void prova1()
{
MessageBox.Show("x = " + x.ToString());
}
如果我點擊按鈕2,然後Button1的我顯然得到了「X = 1」的popbox。但如果我通過Windows Phone應用程序調用prova1(),我總是會得到「x = 0」。這是一個非常普遍的行爲:如果我實例化WCF服務器的代碼的對象,並嘗試在被稱爲槽的外部設備的WCF服務器的方法來使用它,我會得到一個空引用異常。看起來我在WCF服務器代碼中做的所有事情在名爲低谷WCF的方法中完全不可見。有一種方法可以避免這種行爲?
首先,感謝您的回答!但是......也許我並不清楚......我正在準備第二個用戶界面,因此用戶可以單擊該按鈕而無需坐在運行WF應用程序的計算機上。在這個例子中,我確實希望MessageBox在服務器上顯示它的彈出窗口。 WP7僅用於遠程控制應用程序。此外,代替MessageBox,我可以使用 System.Diagnostics.Debug.Print(x.ToString()) 或在調試過程中設置斷點並檢查x值,並獲得相同的結果。 –
嘿斯特凡諾 - 對不起任何midunderstandings :) – faester
WCF不用於UI,它將使混亂if語句,如果你繼續執行計劃,使組合實現你的代碼。我會去繼承或組成。 – faester