1
我目前正在開發WCF發佈訂閱服務。我的服務具有下面的代碼,錯誤對象引用未設置爲WCF服務上的對象實例
public void PublishPost(string postSampleData)
{
PostChangeEventArgs e = new PostChangeEventArgs();
e.PostData = postSampleData;
PostChangeEvent(this, e);
}
,爲postChangeEvent代碼
public class PostChangeEventArgs : EventArgs
{
public string PostData;
}
,並在我的客戶端文件,我在main方法寫了這個代碼,
class Program : IPostingContractCallback
{
static void Main()
{
InstanceContext site = new InstanceContext(null, new Program());
PostingContractClient client = new PostingContractClient(site);
WSDualHttpBinding binding = (WSDualHttpBinding)client.Endpoint.Binding;
String clientcallbackaddress = binding.ClientBaseAddress.AbsoluteUri;
clientcallbackaddress += Guid.NewGuid().ToString();
binding.ClientBaseAddress = new Uri(clientcallbackaddress);
client.Subscribe();
}
public void PostReceived(string postSampleData)
{
MessageBox.Show("PostChange(item {0})", postSampleData);
}
}
併爲我的數據源代碼...
class Program : IPostingContractCallback
{
static void Main(string[] args)
{
InstanceContext site = new InstanceContext(new Program());
PostingContractClient client = new PostingContractClient(site);
client.PublishPost("testing");
Console.WriteLine();
Console.WriteLine("Press ENTER to shut down data source");
Console.ReadLine();
//Closing the client gracefully closes the connection and cleans up resources
client.Close();
}
public void PostReceived(string postSampleData)
{
Console.WriteLine("PostChange(item {0})",postSampleData);
}
}
運行服務之後,接着是客戶端,然後是數據源,我想從我的客戶端接收一個彈出消息框。但是,在線上出現錯誤
PostChangeEvent(this, e);
未將對象引用設置爲對象的實例。
有誰知道如何解決這個問題?
嗯。所以你的意思是我沒有訂閱者?只是爲了檢查,我的客戶端文件中的代碼是否已經訂閱了該服務? – Thomas
@Thomas:是的,沒有訂戶,所以PostChangeEvent爲null。我不知道客戶端代碼是否意味着訂閱一個事件處理程序 - 它看起來像WCF的東西,我不明白...但從C#語言的角度來看,它肯定不像在那裏是任何用戶... –
好吧!謝謝你的回覆! – Thomas