Ich gehe davon aus, dass Tools wie RawCopy ähnliche Mechanismen wie Backup-Tools verwenden... d.h: Dass sie Files in einer Art kopieren welche selber auch keine Sperren setzen... selber aber gesperrte Files kopieren können.
VB6 war lange vor Dotnet da und VB.NET hat nur ein bisschen Syntax mit VB6 gemein, und eben die Programmierer.
PS: Man kann auch mit VB.NET mit einem sauberen Stil gute Programme entwickeln... wie auch mit C# friemeln und schlechten Code schreiben... aber die Tendenz ist schon da ... (VB=Viele Bastler).
Wichtig aus eigener Erfahrung: ein ActiveX-Control MUSS von UserControl ableiten (also nicht von Panel oder sonstwas)... sonst werden die Events deines UserControls versenkt.
@FZelle: Delete ExecuteNonQuery ist sicher die schnellere Variante... mein Post war nur eine Anmerkung auf diesen spezifischen Satz:
Zitat von steffen_dec
Natürlich könnte ich auch ein SQL-Befehl zum löschen der Datensätze an die DB absetzen, ich wollte aber mit den bereits geöffneten DataAdapter/DataTable machen.
1) Du meinst nur dass Du was sendest :-) (z.:B bleibt alles lokal im Puffer)
2) Auf der Empfängerseite ist der Socket offen aber niemand interessierts
Ich wiederhole nochmal:
Wenn auf der Empfängerseite kein offener Socket mehr ist, dann kannst Du entweder gar nichts mehr senden und kriegst sofort eine Exception... oder Du kannst genau 1 mal senden und beim 2 ten senden kriegst du eine Exception
Dies ist davon abhängig ob ein Socket ordentlich geschlossen wurde... oder ob nur unterwegs irgendwo etwas abgeraucht ist...
Ich habe schon x grosse Server mit TCP geschrieben welche in hoher Frequenz mit verschiedenen Clients / SPS-Steuerungen Daten austauscht... ich habe also ein klein wenig Erfahrung in dem Gebiet.
Poste doch mal ein wenig Code von der Sende und Empfangsseite... ev. ist es ja ein offensichtlicher Fehler :-)
Wie liest Du die Daten Synchron in einem eigenen Thread oder Asynch ?
Ich vermute eher, dass Du beim AUSLESEN ein Problem hast (dein Thread abstürzt oder Du keinen neuen Asynch startest)... das hätte genau den Effekt... Socket bleibt offen (deshalb merkt der Client nichts)... Und Du erhälst zwar die Daten... merkst es aber nicht ...
Nachtrag:
Wenn der Socket auf der Empfängerseite zu wäre... dann könntest Du je nach Konstellation 1 oder gar kein Paket mehr senden ohne auf der Senderseite eine Exception zu erhalten
Bei TCP kannst Du nur genau einen Send versemmeln (der geht in's Nirvana wenn die Gengenstelle nicht mehr verfügbar ist)... wenn Du dann nochmal was sendest, dann kriegst Du einen Fehler.
Also muss das was Du beschrieben hast einen anderen Grund haben (deshalb auch meine Frage nach virtuellen Maschinen... so etwas habe ich bisher nur auf virtuellen Maschinen gesehen).
Oder Du liest das XML in ein DataSet ein... bindest Die Objekte an die Rows... dann kannst Du mit DataSet.HasChanges jederzeit den Status abfragen... oder dich in die Events des DataSets einklinken
ClipRectangle ist nicht das ganze ClientRectangle des Controls... sondern nur der Bereich des ClientRectangles welcher aufgrund der Ueberdeckung nicht mehr gültig ist (das ist nur dann interessant wenn Deine Zeichen-Methode weniger zu tun hätte wenn diese nur einen Teil neu zeichnen müsste).
Wenn der Designer offen ist und alles angezeigt wird.
Dann zieh einen Button auf das Form.
Speichern
Button entfernen
Speichern
Alle Fenster schliessen
Solution bereinigen
VS schliessen
VS öffnen
Neu kompilieren
VS schliessen
So was hilft bei mir meistens (es erzwingt, dass der DesignerCode von VS neu geschrieben wird)... und die Bereinigung löscht ungültigen Schrott in Obj.
@Abt: sehe ich auch so. Wir übertragen Daten an MDE (Win-CE/win-Mob) und zippen diese auch erst ab einer gewissen Grösse... (da es erst ab einer gewissen Grösse wirklich Vorteile bringt... vorher bringt es eher Nachteile)