bisher prüfst du ja noch nicht alle Möglichkeiten, wie Spieler 1 gewinnen könnte ab. Da gibt es ja zum Beispiel:
XXX
OOI
III
oder auch
XOI
XIO
XII
und viele weitere Kombinationen auf dem Feld, die bedeuten, dass Spieler 1 gewonnen hat. Bist du sicher, dass du in deinen Tests die Eingabe so gemacht hat, dass deine Gewinn-Methode es überhaupt erkennen kann? Denk dabei auch daran, dass du zwar erst nach der Spalte (x-Koordinate) und dann nach der Zeile (y-Koordinate) fragst, das Array aber als [y,x] abspeicherst. Vielleicht hast du da auch einen Fehler gemacht und deswegen eine Konstellation zum Testen gewählt, die von der Methode noch gar nicht erkannt wird.
Außerdem kannst du dir mal die Reihenfolge der Methondenaufrufe in der do-while-Schleife deiner Main-Methode ansehen. Wann genau wird geprüft, ob ein Spieler gewonnen hat? Brichst du deinen Test vielleicht ab, bevor das überhaupt geprüft wird?
alle deiner Methoden sind generisch, zu erkennen am Typparameter T. Zusätzlich ist die Methode public static IEnumerable<IEnumerable<T>> Permute<T>(this IList<T> v) eine Erweiterungsmethode, zu erkennen am this vor dem ersten Parameter. Das bedeutet, dass sie wie eine Methode des Typs, den du erweiterst (hier ILIst<T>), aufgerufen werden kann. Weitere Informationen dazu findest du auch in der Doku https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/extension-methods (Docs)
ich gehe davon aus, dass du mit den Daten z.B. Benutzereingaben meinst. Diese kannst du doch einfach per Datenbindung zwischen View und ViewModel austauschen, sodass du sowohl lesend als auch schreibend auf die Daten zugreifen kannst, siehe [Artikel] MVVM und DataBinding. Dass das ViewModel die View nicht kennt, ist nischt schlimm, weil der Command ja in der gleichen Instanz des ViewModels aufgerufen wird, in der du auch alle Daten gebunden hast.
Oder meinst du irgendwelche speziellen Daten, die du nicht dadurch abdecken kannst?
Du musst den Punkt als Dezimaltrenner verwenden.
Außerdem musst du ein String-Literal immer in Anführungszeichen angeben, der Beispielcode sollte so gar nicht kompiliert werden können.
Ich habe genau das gleiche Problem: ich melde mich an, lese einige Beiträge und verlasse dann die Seite, ohne mich abzumelden. Wenn ich einige Zeit später (vllt 1h) wieder das Forum aufrufe (ohne den Browser zwischendrin geschlossen zu haben), bin ich wieder abgemeldet.
Wenn ich mich richtig erinnere, tritt das Problem bei mir auf, seitdem ich von verschiedenen Systemen/Geräten auf das Forum zugreife. Anfangs, als ich immer nur vom gleichen PC aus zugegriffen habe, wurde ich nicht abgemeldet.
Die jeweiligen genutzten Systeme sind:
1. Win10, aktuelle FF-Version (69.0.1, 64-bit)
2. Linux Mint, aktuelle FF-Version (69.0.1, 64-bit)
Was genau möchtst du denn über die TextBox machen?
Wenn der Text, der über den SerialPort reinkommt, angezeigt werden soll, musst du den Code dafür auch in die SerialPort1_DataReceived1()-Methode schreiben, denn jetzt würdest ja dann Text in die TextBox eintragen, wenn der Benutzer in ebendiese etwas eingetippt (->TextChanged-Event) hat. Und da du den Text vom SerialPort bereits in SerialPort1_DataReceived1() ausliest, liefert der erneute Aufruf von ReadLine() in RichTextBox1_TextChanged() dir keinen Text, sprich, sobald Text in die Textbox eingegeben wird, setzt du den wieder auf "".