Laden...

Visual Studio 2010 Express - "Thread" enthält keinen Konstruktor

Erstellt von c#dude vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.184 Views
C
c#dude Themenstarter:in
5 Beiträge seit 2018
vor 6 Jahren
Visual Studio 2010 Express - "Thread" enthält keinen Konstruktor

Ich probiere mich gerade mich gerade an einer einfachen Übung für Server und Client.

Mein Server:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public static int port = 32742;
        public static TcpListener listener = new TcpListener(IPAddress.Any, port);
        public static Thread conn = new Thread();

        static void awaitConnection()
        {
            listener.Start();
            listener.AcceptSocket();
            MessageBox.Show("Erfolgreich!");
            
        }

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            conn.Start();
        }
    }
}


Mein Client :

[csharp]using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace ConsoleApp6
{
    class Program
    {
        public static TcpClient client;
        public static int port = 32742;
        public static string ipadresse = "192.168.2.102";
        static void Main(string[] args)
        {
            client = new TcpClient();
            try
            {
                do
                {
                    client.Connect(IPAddress.Parse(ipadresse), port);
                }
                while (client.Connected != true);
            }catch (Exception ex) {}
        }
    }
}[/csharp]

Ich erhalte folgende Fehlermeldung:

Schweregrad	Code	Beschreibung	Projekt	Datei	Zeile	Unterdrückungszustand
Fehler	CS1729	"Thread" enthält keinen Konstruktor, der 0 Argumente annimmt.	WindowsFormsApp1	C:\**\Form1.cs	20

Anscheinend habe ich etwas mit der Namensgebung durcheinander gebracht,
bzw der Code an sich dürfte nicht fehlerhaft sein?

Wenn ich ausführe , wird jeweils die Console geöffnet,
der Client als GUI erscheint jedoch nicht,
ob versucht wird zu connecten kann ich nicht sagen, da weder meine GUI noch die MessageBox angezeigt wird,
testumgebung ist eine VM mit Client & Server gleichzeitig.

Ein Tipp was ich falsch mache reicht schon, danke.

4.942 Beiträge seit 2008
vor 6 Jahren

Was willst du mit dem Thread denn machen? Du mußt dem Thread noch eine Methode übergeben, die ausgeführt werden soll, s. Thread Konstruktoren.

Und deine Problembeschreibung deutet auch darauf, daß du dich noch nicht mit dem Debugger auskennst: [Artikel] Debugger: Wie verwende ich den von Visual Studio?

C
c#dude Themenstarter:in
5 Beiträge seit 2018
vor 6 Jahren

Du hast Recht, ich muss mich genauer einlesen.
[Tutorial] Client-/Server-Komponente über TCP-Sockets

Danke.

4.942 Beiträge seit 2008
vor 6 Jahren

Im Tutorial wird der Thread korrekt erzeugt und gestartet:


/// <summary>
/// Der Haupt-Thread
/// </summary>
private Thread mainThread;

/// <summary>
/// Der Standardkonstruktor richtet den Thread ein, welcher
/// anschliessend auf Client-Verbindungen wartet.
/// </summary>
public Server()
{
    // Hauptthread wird instanziiert ...
    mainThread = new Thread(new ThreadStart(this.mainListener));
    // ... und gestartet
    mainThread.Start();
}

Du solltest auch UI und Client/Server-Kommunikation nicht im Code vermischen.
Lasse Server und Client als eigenständige Klassen und rufe diese nur von deinem UI Code auf (oder als Benachrichtigung mittels Ereignissen, s. [FAQ] Eigenen Event definieren / Information zu Events (Ereignis/Ereignisse)).