c # - Vis data sendt til WCF i Windows-formular

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg er vært for en WCF-tjeneste i Windows-applikation, WCF-tjenesten modtager meddelelser fra en anden Windows-tjeneste, og jeg skal vise disse meddelelser i tekstboksen inde i den åbne form


Hvordan kan jeg gennemføre det? Jeg bruger følgende kode, men det virker ikke:


Formularkode:


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-servicekoden:


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


Formularen består af 2 tekstbokse og en knap, der starter WCF service


Tak på forhånd

Bedste reference


Jeg tror, ​​at dit problem stammer fra DoWork metoden, især denne linje


Form1 monitorForm = new Form1();


Du instantiating et nyt Form1 objekt simpelthen for at kalde WriteMessage metoden, men du viser aldrig formularen, det falder simpelthen ikke uden for anvendelsesområdet. Hvis du har en eksisterende reference til en Form1 klasse, skal du passere det for at kalde WriteMessage metoden på den eksisterende formular.

Andre referencer 1


Jeg har løst det, jeg brugte følgende kode i WCF-tjenesten, og den fungerer korrekt:


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

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