Autor Beitrag
doubleII
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40



BeitragVerfasst: Mi 11.01.17 13:03 
Hallo zusammen,

ich habe folgendes Problem:
Ich erstelle eine Server-Client Verbindung.
WinForm Server
WinForm Client

ich möchte eine checkBox, die auf WinForm1 habe, nicht nur direkt aus dem WinForm Server
anhaken sondern von der WinForm Client auch steuern. Ich habe folgenden Code:

Es wird eine Verbindung erstellt und der Server wartet auf den Client.
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
 
 private void backgroundWorker1_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            ReceivedDate();
        }

private void ReceiveData()
        {           
            if (client.Connected)
                while (client.Connected)
                {
                    try
                    {
                        receive = streamReader.ReadLine();
                        textBox1_5.Invoke(new MethodInvoker(delegate()
                            {
                                textBox1_5.AppendText(receive + Environment.NewLine);
                            }));
                        GetCommand(receive);
                        receive = "";
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.ToString());
                        throw;
                    }                   
                }
            else
            {
                textBox1_5.Text = "Connect failed!";
            }

  private void GetCommand(string receive)
        {
            if (receive == "grab")
            {
                checkBoxGrab.CheckState = CheckState.Checked;
            }
            else if (receive == "stop")
            {
                checkBoxGrab.CheckState = CheckState.Unchecked;
            }
        }

  private void checkBoxGrab_CheckedChanged(object sender, EventArgs e)
        {
            Grab();
        }


Wenn ich das Befehl grab von Client aufrufe bekomme ich folgende Fehlermeldung:
Zitat:
der zugriff auf das steuerelement erfolgte von einem anderen thread


Ich habe ins I-Net recherchiert aber komme ich noch nicht klar, wie man das Problem lösen kann. :(
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Chefentwickler
Beiträge: 20046
Erhaltene Danke: 1869

Win 10
C# (VS 2015)
BeitragVerfasst: Mi 11.01.17 13:19 
user profile icondoubleII hat folgendes geschrieben Zum zitierten Posting springen:
Ich habe ins I-Net recherchiert aber komme ich noch nicht klar, wie man das Problem lösen kann. :(

Dann frage ich mich, wie Dein bisheriger Code zustande gekommen ist, die Lösung steht da schon drin: die Invoke-Methode benutzen.

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
doubleII Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40



BeitragVerfasst: Mi 11.01.17 16:07 
Abgeschrieben :).

Danke Cristian S.