以Windows格式显示发送到WCF的数据

时间:2011-03-08 14:34:58

标签: c# wcf windows

我在Windows应用程序中托管WCF服务,WCF服务从另一个Windows服务接收消息,我需要在打开的表单内的文本框中显示这些消息

我该如何实现?我使用以下代码,但它不起作用:

表单代码:

public partial class Form1 : Form
{
private ServiceHost Host;

public Form1()
{
    InitializeComponent();          
}  

private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
    Host.Close();
}

public void WriteMessage(string message)
{
    richTextBox1.Text += message;
    richTextBox2.Text = message;
}

private void StartBtn_Click(object sender, EventArgs e)
{
    Host = new ServiceHost(typeof(MonitoringData));
    Host.Open();
    button1.Enabled = false;
}
}

WCF服务代码:

public class MonitoringData : IMonitoringData
{
public void DoWork(string message)
{
    Form1 monitorForm = new Form1();
    monitorForm.WriteMessage(message);            
}
}

表单由2个文本框和一个启动WCF服务的按钮组成

提前致谢

2 个答案:

答案 0 :(得分:1)

我认为您的问题源于DoWork方法,尤其是此行

Form1 monitorForm = new Form1();

您只是为了调用Form1方法而实例化一个新的WriteMessage对象,但是您从不显示该表单,它只是超出了范围。如果你有一个Form1类的现有引用,那么你应该传递它来调用现有表单上的WriteMessage方法。

答案 1 :(得分:0)

我已经解决了,我在WCF服务中使用了以下代码并且它可以正常工作:

public class MonitoringData : IMonitoringData
{
   public void DoWork(string message)
   {

       Form1 monitorForm = (Form1)System.Windows.Forms.Application.OpenForms[0];
       monitorForm.WriteMessage(message);            
   }
}