Hallo malignate,
super, ich glaube, so wird es funktionieren.
Danke schön.
Christoph
Hallo,
ich möchte eine Simulation programmieren. Darauf fahren Fahrzeuge auf vorgefertigten Routen. Natürlich fahren sie dabei auch um Kurven. Allerdings weiß ich nicht, wie ich die Bewegung realistisch darstellen kann, damit das Fahrzeug mit gleicher Geschwindigkeit von der Geraden kommend durch die Kurve fährt.
Die Kurve zeichne ich mit Graphics.DrawEllipse wobei es ok ist, wenn die beiden Radien identisch sind (falls das die Lösung vereinfacht).
Vielen Dank für eure Unterstützung
Christoph
Hallo witte,
dummerweise muss unser ERP System (nicht SAP) auf alle vorhandenen Versionen der Dateien zugreifen können, sofern vorhanden. Das ERP-System umzuschreiben, damit es auch in anderen Ordnern nach Dateien sucht, ist garantiert teurer, als ein Work-Around.
Ich bin auch nicht glücklich über diese Lösung.
Viele Grüße
Christoph
Hallo malignate,
mehr als 5.000 EUR für so eine Lösung auszugeben ist etwas übertrieben.
Wenn es keine bessere Lösung gibt, werde ich alle Dateien noch einmal in einen Backup-Ordner auf dem Server speichern. Wenn eine Datei versehentlich gelöscht wurde, kann ich sie sofort wieder aus dem Backup-Ordner wiederherstellen (automatisch per FileSystemWatcher).
Viele Grüße
Christoph
Hallo pdelvo,
danke für die Idee. Es sind aber Dateien im 5-stelligen Bereich, nicht nur einzelne.
Ansonsten wäre deine Idee natürlich super geeignet!
Wenn keiner eine bessere Lösung hat, werde ich es jetzt anders lösen:
Die Benutzer bekommen auf den Ordner nur Leserechte, die auf die neu erstellten Dateien vererbt werden. Wird eine neue Datei erstellt, wird ein Event gefeuert, das ich abfange und die Rechte an der älteren Version dieser Datei ändere, sodass die ältere Version löschbar ist.
Viele Grüße
Christoph
Hallo Abt,
gibt es kein Event wie z. B. BeforeFileDeletion(..., bool Cancel)?
Viele Grüße
Christoph
Hallo,
ich möchte mit einem FileSystemWatcher ein Verzeichnis überwachen.
Wenn ein Benutzer versucht eine Datei zu löschen, möchte ich prüfen, ob dies zum gegenwärtigen Zeitpunkt erlaubt ist und ggf. das Löschen verhindern.
Das Löschen ist dann erlaubt, wenn es eine neuere Version dieser Datei gibt.
Beispiel: dateiname-001.txt darf gelöscht werden, wenn es eine dateiname-002.txt (oder höher) gibt
Löschanfragen kommen selten vor, es gibt also mit der Überwachung keine Probleme.
Kann man das mit FileSystemWatcher realisieren bzw. kann man das Löschen überhaupt irgendwie verhindern? Die Berechtigung für die Dateien auf Betriebssystem-Ebene zu ändern, halte ich für zu aufwändig, da ständig neue Dateien für diesen Ordner erstellt werden.
Vielen Dank für eure Unterstützung
Christoph
Hallo,
ich dachte, dass der Timer für so was oversized wäre. Eigentlich benutzt man ihn doch für regelmäßig wiederkehrende Aktionen.
Ok, dann benutze ich einen Timer.
Viele Grüße
Christoph
Hallo,
bist du sicher?
Meinst du das so?
Viele Grüße
Christoph
//Edit: Tippfehler
Hallo,
ich glaube, das wird mir jetzt zu kompliziert.
Hier der Code, der im Thread ausgeführt wird:
cpuCounter.NextValue();
Thread.Sleep(1000);
load = cpuCounter.NextValue();
cpuCounter ist ein System.Diagnostics.PerformanceCounter und gibt mir die CPU-Auslastung zurück.
load ist eine Variable vom Typ float.
Schöne Grüße
Christoph
Hallo,
@herbivore: Dann versuche ich das mittels Event, danke.
@Sebastian: Es gibt gar keine Fehlermeldung. Es ging mir nur um eine Bestätigung oder Widerlegung meiner Theorie, dass mein oberer Quellcode so nicht funktioniert.
Viele Grüße
Christoph
Hallo,
ich möchte innerhalb eines Threads eine Variable verändern und anschließend außerhalb des Threads weiter verarbeiten.
Wie bekomme ich mit, dass die Variable geändert wurde? Löse ich dazu im Thread ein Event aus oder gibt es eine bessere Lösung?
ursprünglich wollte ich das ganze mit
new Thread(new ThreadStart(delegate{...}));
lösen, aber das scheint nicht zu funktionieren.
Jetzt erstelle ich eine Instanz von Thread und rufe dann Start() und Join() auf. Aber irgendwie kommt mir das nicht richtig vor.
Thread thread = new Thread(new ThreadStart(delegate{...}));
thread.Start();
thread.Join(); // Warten auf Beenden des Threads
Vielen Dank für euren Denkanstoß
Christoph
Hallo,
ich würde mir eine Struct aufbauen.
Dann erstellt du ein Array dieser Struct für deine Server.
Du durchläufst das Array und versuchst eine Verindung aufzubauen. Klappt es, stellst du die aktuellen Verbindungsversuche auf 0. Klappt es nicht, erhöhst du Verbindungsversuche um 1. Hast du die Anzahl der maximalen Verbindungsversuche erreicht (bzw. waren es 3), dann kommt die Fehlermeldung.
Viele Grüße
Christoph
Hallo,
ich habe einen kleinen Denkfehler begangen.
Ich muss ja nur das Lesen wieder neu starten. Es betrifft das Schreiben nicht, weil lokal geschrieben wird. Lediglich die Quelldatei liegt im WAN.
Danke für die Hilfe
Christoph
Hallo T-Virus,
ich habe noch nie mit Seek gearbeitet.
Das bedeutet, ich benutze nach dem Öffnen der zu lesenden und der zu schreibenden Datei jeweils Seek und mache dann weiter wie zuvor?
Viele Grüße
Christoph
Hallo,
ich versuche eine ca. 13 GB große Datei mittels FileStream.Read über eine instablile und sehr langsame (1 Mbit) WAN-Verbindung zu kopieren.
Nach einiger Zeit (kann nach Minuten oder auch Stunden sein) bekomme ich die Exception, dass diese Netzwerkverbindung nicht mehr existieren würde.
Starte ich das Programm anschließend neu, funktioniert die Verbindung wieder.
Wie kann ich vermeiden, dass das Programm abbricht, wenn die Verbindung verloren geht? Einen Timeout kann ich leider nicht einstellen.
Vielen Dank für eure Hilfe
Christoph
Hallo,
ich habe ein DataGridView, in dem meine Server aufgelistet sind und angezeigt wird, welche der überwachten TCP-Ports erreichbar sind. Dieses DataGridView wird periodisch mittels Timer aktualisiert.
Wenn ich die Aktualisierung nacheinander durchlaufen lasse, dauert ein Lauf ca. 12 Sekunden. Bei einer Aktualisierung pro Minute, finde ich das eine ziemlich lange Zeit, da ein nicht erreichbarer Server für eine lange Wartezeit sorgt, da ich auf ein Time-Out warten muss.
Jetzt war meine Idee, alle Server parallel abzufragen. Dazu habe ich eine Methode geschrieben:
private void ScanPorts(int row)
{
// Do sth
}
Mittels System.Threading.Thread wollte ich nun in einer Schleife, die Zeilen des DataGridView hochzählen und für jede Zeile einen neuen Thread aufrufen. Leider weiß ich aber nicht, wie ich einen Thread aufrufen kann, wenn die Methode einen Parameter (int row) enthält.
Wer kann mir bitte auf die Sprünge helfen?
Viele Grüße
Christoph
Hallo,
ich gebe zu, mich noch nie mit Multithreading beschäftigt zu haben, da es bisher nicht notwendig war.
Jetzt ist es aber notwendig.
Ich habe eine knapp 100 MB große Textdatei, mit etwas mehr als 1,2 Millionen Zeilen.
Ich lese die Daten zeilenweise ein, da ich prüfen muss, ob die Zeile überhaupt verarbeitet werden soll.
Die Ausgabe der benötigten Zeilen erfolgt dann in ein DataGridView.
Wenn ich das ohne Multithreading mache, "friert" das Fenster ein, bis die Verarbeitung abgeschlossen ist.
Jetzt meine Frage: mit welcher Art von Multithreading kann ich
ohne dass mir die einzelnen Threads das DGV zerschießen? Die Ausgabe muss in der Reihenfolge wie in der Textdatei sein.
Vielen Dank für eure Hilfe
Christoph
P.S.: Ich habe mich zu dem Thema schon mal ein wenig eingelesen, aber irgendwie hat mir folgender Text nicht wirklich weiter geholfen: Multithreading in C#
Hallo,
ich habe eine Funktion, die einen String auf bestimmte Zeichenfolgen prüft. Wenn eine dieser Bedinungen zutrifft, soll true zurück geliefert werden. Wenn keine Bedinungung zutrifft, dann false.
//Edit: true und false verwechselt
Macht es Sinn, die einzelnen Bedinungen parallel in Threads aufzuteilen, um die Performance zu steigern?
Hier der verkürzte Beispielcode:
private bool Filtered(string s)
{
if (s.StartsWith("Closed session for "))
{
return true;
}
if (s.StartsWith("Opened session for "))
{
return true;
}
if (s.StartsWith("Starting replication with server "))
{
return true;
}
if (s.StartsWith("Finished replication with server "))
{
return true;
}
if ((s.StartsWith("Router: Transferred ")) && (s.Contains(" messages to ")))
{
return true;
}
return false;
}
Vielen Dank für eure Hilfe
Christoph
Hallo,
ich möchte gerne wissen, wie viel CPU-Zeit ein Programmteil benötigt. Es handelt sich um eine Programmschleife, die sehr oft durchlaufen wird.
Ich würde gerne verschiedene Varianten ausprobieren, um dann die schnellste zu nutzen.
Zu DOS-Zeiten habe ich dazu einfach zweimal System-Zeit ausgelesen, das war einfach. Mit Windows und Multi-Tasking ist das jedoch viel komplizierter geworden.
Was ich gefunden habe, ist System.Diagnostics.PerformanceCounter. Leider habe ich aber nur Beispiele gefunden, bei denen man die aktuelle CPU-Auslastung ermitteln konnte, was mich aber nicht weiter bringt.
Ich möchte gerne wissen, wie viele Sekunden mein Programm die CPU auslastet (auf 100 % umgerechnet). Wenn mein Programm also 5 Sekunden lang die CPU zu 20 % auslastet, soll das Ergebnis 1 Sekunde sein.
Gibt es dafür eine Methode?
Vielen Dank für eure Unterstützung und frohes neues Jahr
Christoph
Hallo,
ich möchte einem TreeView-Steuerelement einen Knoten hinzufügen (oberste Ebene), wenn dieser noch nicht vorhanden ist (Vermeidung von Dubletten).
Dazu habe ich folgenden Code geschrieben:
public static void AddNode(TreeView tv, string text)
{
TreeNode tn = new TreeNode(text); // Neuen Knoten erzeugen
if (!tv.Nodes.Contains(tn)) // Prüfen, ob Knoten noch nicht vorhanden ist
{
tv.Nodes.Add(tn); //Falls nicht vorhanden: anhängen
}
}
Wenn ich jetzt Knoten mit gleichem Namen hinzu fügen möchte, dann klappt das, aber ich weiß nicht, warum.
Wer kann mir da einen Tipp geben, was ich falsch mache?
Christoph
Hallo,
sorry, aber wo finde ich System.Core?
Vielen Dank
Christoph
Hallo unconnected,
leider ist es .NET Framework 4.5. 😦
Hat sonst noch jemand eine Idee, woran es liegen kann? Muss ich einen Verweis oder ein Using verwenden?
//Edit: Dass mit dem System.Core hatte ich überlesen, werde ich nachher mal ausprobieren.
Viele Grüße aus Köln
Christoph
Hallo,
ich möchte gerne eine Erweiterungsmethode programmieren, bekomme in C# 2012 Prof. immer diese Fehlermeldung angezeigt:
Fehlermeldung:
Es kann keine neue Erweiterungsmethode definiert werden, weil der für den Compiler erforderliche Typ 'System.Runtime.CompilerServices.ExtensionAttribute' nicht gefunden werden kann. Fehlt ein Verweis?
Hier der Quellcode:
public static class RichtextBoxExtensions
{
public static void AppendText(this System.Windows.Forms.RichTextBox rtb, string text, System.Drawing.Color color)
{
rtb.AppendText("asdf");
}
}
In C# 2008 Express funktioniert das wunderbar. Kann es daran liegen, dass ich mehrere Versionen von C# auf dem Computer installiert habe? C# 2012 ist frisch installiert und ich habe an der Konfiguration noch nichts geändert, ist alles noch Default.
Vielen Dank für eure Hilfe.
Christoph
Hallo,
wie kann ich feststellen, dass ein Fenster auf einen anderen Bildschirm verschoben worden ist?
Hintergrund ist, dass ich dann ja ggf. die Fenstergröße an die geänderte Bildschirmauflösung anpassen muss.
Vielen Dank für eure Hilfe
Christoph
Hallo,
erst mal ganz vielen Dank für eure Beiträge.
Allerdings gab es da ein kleines Missverständnis:
Die Reihenfolge in der die Striche (Strokes) auf Papier gezeichnet werden müssen, ist mir bekannt. Ich möchte dies in dem Bild auf dem Computer farblich darstellen. Ich muss lediglich die Kurven zu den einzelnen Strichen kennen, damit ich genau diesen Bereich farbig füllen kann. Jeder Strich muss demnach als geschlossenes Kurve vorliegen.
Wenn das nicht gewährleistet ist, muss ich mich nach einer anderen Lösung umschauen.
Vielen Dank für eure Hilfe
Christoph
(Kefu)
Hallo,
ich habe gelesen, dass TTF (True Type Fonts) nichts anderes wären als komprimierte GDI+ Informationen.
Kann man diese mit C# auslesen, um sie dann selbst zu zeichnen?
Hintergrund ist ein Programm, mit dem ich chinesische Schriftzeichen zeichnen möchte. Dabei möchte ich nacheinander und in korrekter Schreibreihenfolge die Striche zeichnen, wobei jeder Strich eine andere Farbe erhalten soll.
Vielen Dank für eure Unterstützung
Christoph
Hallo,
ist es in C# möglich eine Anwendung hinter die Desktop Icons zu legen? Also sozusagen zwischen Hintergrundbild und Icons?
Vielen Dank für eure Hilfe
Christoph
Hallo herbivore,
vielen herzlichen Dank für die ausführliche Antwort. Ja, du hast Recht: es gibt zu viele Schlupflöcher, die man gar nicht alle stopfen kann. Wir werden die Lösung mit den Unterordnern umsetzen.
Dennoch danke für den Tipp mit den ShellExtensions. Das kann man sicherlich trotzdem noch mal gut gebrauchen.
Viele Grüße
Christoph
Hallo,
ich weiß, dass man den Windows Explorer um eigene Funktionen erweitern kann. Aber ist es auch möglich, dass in der Tree- / ListView nur die Ordner / Dateien angezeigt werden, die ich sehen möchte?
Beispiel: Nur die Ornder / Dateien anzeigen, auf die ich auch mindestens Leserechte habe. Es ist schon blöd, wenn ich im Ordner Personal zwar keine Dokumente öffnen darf, aber dennoch das Dokument Kündigung-Müller.doc angezeigt bekomme. 😃
Oder: Laufwerk Z: zeigt alle Userverzeichnisse an, Laufwerk Y: alle Gruppenverzeichnisse. Warum nicht nur diejenigen, auf die ich auch zugreifen darf? Das würde gemappte Laufwerke sparen.
Ich müsste also irgendwie vor dem Anzeigen der Ornder / Dateien entscheiden können, ob diese angezeigt werden.
Vielen Dank für eure Infos
Christoph
Hallo,
vielen Dank für eure Hilfe.
Das ganze funktioniert über den
SessionSwitchEventHandler
, und darin kann ich
e.Reason == SessionSwitchReason.SessionLock
abfragen.
Viele Grüße
Christoph
Hallo,
unser Firmen-Messenger stellt sich automatisch auf "Away", sobald ein Anwender seinen Computer sperrt.
Kann mir jemand sagen, ob man sich da in ein Ereignis einklinken kann / muss oder periodisch etwas abfragen muss?
Vielen Dank für eure Unterstützung
Christoph
Hallo TheGear,
du meinst also folgendes:
Die Richtung der Linie als Vector nehmen, diesen Vector dann z. B. um 90 ° nach rechts drehen mit einer Länge von z. B. 10 und dort die andere Linie zeichnen?
Hört sich gut an!
Wenn keiner eine bessere Lösung hat, werde ich das mal versuchen.
Viele Grüße
Christoph
Hallo Christian,
wahrscheinlich habe ich mich nicht verständlich ausgedrückt.
Wenn du das mit einem Kreis versuchst, wirst du sehen, dass es nicht klappt. Die Linien werden sich überschneiden (Ausgangs-Spline und "Parallel"-Spline).
Viele Grüße
Christoph
Hallo TheGear,
sorry, aber davon habe ich jetzt nichts verstanden.
Ich möchte mit den Splines Straßen zeichnen. Mein Spline ist die Mitte der Straße, die einzelnen Fahrstreifen und deren Markierungen sind die parallelen Kurven.
Viele Grüße
Christoph
Hallo Christian,
ja, ich zeichne sie im GDI.
Allerdings möchte ich die Splines nicht auf der x- und y-Achse verschieben, sondern parallel zu einer anderen Spline-Kurve zeichnen.
Viele Grüße
Christoph
Hallo,
wie ist es möglich, zu einer bestehenden Spline-Kurve noch weitere parallele Kurven zu zeichnen (z. B. mit einem Abstand von x Punkten)?
Vielen Dank für eure Unterstützung
Christoph
Hallo,
auf einem Computer werden ständig (im Sekundentakt) Daten aktualisiert und im Hauptspeicher abgelegt (MemoryStream).
Diese Daten möchte ich in unregelmäßigen Abständen von verschiedenen Computern abrufen. Eine Authentifizierung ist nicht erforderlich, da nur aus dem lokalen Netzwerk auf den Computer zugegriffen werden kann.
Benutze ich dazu einen TcpListener oder gibt es dafür einen besseren Ansatz.
Vielen Dank für eure Hilfe
Christoph
Hallo,
danke für die Info. Ich hatte mir schon gedacht, dass der alte Code nicht ohne weiteres funktioniert. Aber er wird auf alle Fälle eine sehr gute Basis für meine Anwendung darstellen.
Christoph
Hallo,
ja, das Thema ist noch aktuell.
Du bist ja spitze! Ich werde mal testen, ob es damit klappt.
Christoph
Hallo,
vielen Dank euch beiden.
Christoph
Hallo,
ich möchte eine TextBox mit veränderbarer Rahmenfarbe erstellen. Dazu habe ich folgendes gemacht:
UserControl erstellt
TextBox drauf gepackt
Größe des UserControls auf jeder Seite 1 Pixel breiter als die TextBox
TextBox.BorderStyle = None
Ändere ich nun die UserControl.BackColor, so ändert sich der "Rahmen" um die TextBox.
So weit so gut.
Nun möchte ich gerne ein neues Property erstellen: BorderColor, um die Rahmenfarbe einstellen zu können. Dazu ändere ich die UserControl.BackColor.
Auch kein Problem.
Aber: die Property UserControl.BackColor soll nun die TextBox.BackColor setzen / lesen!
Kann mir bitte jemand erklären, wie ich das hin bekomme?
Vielen Dank
Christoph
Windows Phone 7 Frage:
Hallo,
wir überlegen für unseren Außendienst und die IT-Abteilung HTC HD7 (Windows Phone 7) anzuschaffen, da uns ein Mobilfunk-Anbieter ein sehr interessantes Angebot unterbreitet hat.
Jetzt meine Frage: weiß jemand, wie man es in einer selbst geschriebenen Anwendung hinbekommt, dass ein mit der eingebauten Kamera fotografierter Barcode erkannt wird? Das würde uns die Arbeit nämlich sehr erleichtern.
Für den Außendienst: Produkt-Info anzeigen (EAN8/13-Code)
Für die IT-Abteilung: Verwaltung der Hardware (div. Codes)
Vielen Dank für die Infos
Christoph
Hallo BerndFfm,
danke, das versuche ich mal.
Christoph
Dass die Datei nicht gefunden werden konnte.
Wie gesagt, habe mit der Software-Verteilung keine Erfahrung und finde leider auch kein Tut, wo ich das mal nachlesen könnte.
Christoph
Hallo TheBrainiac,
beim Ausführen kommt aber eine Exception, dass die Datei nicht gefunden werden konnte.
Christoph
Hallo,
sorry, falls ich hier falsch sein sollte, aber ich wusste nicht, wohin ich es sonst hätte posten sollen.
Ich möchte eine Anwendung veröffentlichen, habe damit aber keine Erfahrung. Bisher habe ich einfach die entsprechenden Dateien in den Zielordner kopiert. 😃
Da die neue Software jedoch unser Außendienst einsetzen soll, ist dies nicht mehr praktikabel. Es muss also eine Setup-Datei her. Das klappt auch schon ganz gut, aber... das Projekt beinhaltet auch eine Resource (RTF-Datei), die unter Resourcen angezeigt wird, im Installationspaket jedoch nicht enthalten ist.
Was mache ich falsch bzw. wo kann ich nachlesen, wie es richtig gemacht wird?
Vielen Dank für eure Hilfe
Christoph
Hallo,
@Khalid: Danke vielmals. Ich werde das jetzt mittels Views und SUSER_NAME() lösen.
Christoph
Hallo,
@Lion1984: Meinst du eine SELECT Anweisung, wo im WHERE abgefragt wird, of das Readers-Feld einen bestimmten Benutzernamen enthält? Wie kann ich dann dafür sorgen, dass diese WHERE Klausel nicht manipuliert wird?
@Khalid: Auch an dich die Frage: wie kann man das manipulationssicher machen?
Ich dachte eher an eine Lösung, die direkt auf dem Server greift und demnach nicht manipuliert werden kann.
Christoph