Показать данные, отправленные в WCF в форме Windows - PullRequest
1 голос
/ 08 марта 2011

Я размещаю службу WCF в приложении Windows, служба 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 ]

1 голос
/ 08 марта 2011

Я думаю, что ваша проблема связана с методом DoWork, особенно с этой строкой

Form1 monitorForm = new Form1();

Вы создаете новый объект Form1, просто вызывая метод WriteMessage, но вы никогда не показываете форму, он просто выпадает из области видимости. Если у вас есть существующая ссылка на класс Form1, вы должны передать ее, чтобы вызвать метод WriteMessage в существующей форме.

0 голосов
/ 08 марта 2011

Я решил, я использовал следующий код в службе WCF, и он работает правильно:

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

       Form1 monitorForm = (Form1)System.Windows.Forms.Application.OpenForms[0];
       monitorForm.WriteMessage(message);            
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...