Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von JasonDelife
Thema: [gelöst] Fehler bei der Drag&Drop-Registrierung
Am im Forum: GUI: Windows-Forms

Ich habe nun auf dem PC meines Freundes mal eine Version ohne VB-Splash getestet.
Resultat:
10x öffnen -> 0x Fehler
2x alte Version mit Splash -> beim zweiten mal schon der Fehler
Ich habe auch mal den Code des VB-Frameworks im Reflector angeschaut und herausgefunden, dass der Splash-Code DoEvents() nutzt.
Aufgrund des Test und da ich DoEvents() so ziemlich alles zutraue gehe ich davon aus, dass der VB-Splash das Problem ist und werde dann mal nach Alternativen suchen.
Sollte der Fehler trotzdem mal wieder auftauchen oder ich etwas mehr Zeit haben, dann werde ich eure Tipps befolgen.
EDIT: Habe mal dem Titel ein "GELÖST" vorangestellt und hoffe sehr, dass das auch so bleiben wird ;) .

Vielen Dank für eure Hilfe!
Grüße, JasonDelife.

Thema: [gelöst] Fehler bei der Drag&Drop-Registrierung
Am im Forum: GUI: Windows-Forms

Hallo zusammen.
Ich habe eine WinForms-Applikation geschrieben, bei der ein Control Drag&Drop nutzt (AllowDrop = true).
Das Problem ist, dass ab und zu (ohne erkennbares Muster) ein Fehler auftaucht, in Form des WinForms-Exceptiondialogs:

Zitat
System.InvalidOperationException: Fehler bei der DragDrop-Registrierung ---> System.Threading.ThreadStateException: Für den aktuellen Thread muss der STA-Modus (Single Thread Apartment) festgelegt werden, bevor OLE-Aufrufe ausgeführt werden können. Stellen Sie sicher, dass die Hauptfunktion mit STAThreadAttribute gekennzeichnet ist.
bei System.Windows.Forms.Control.SetAcceptDrops(Boolean accept)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Windows.Forms.Control.SetAcceptDrops(Boolean accept)
bei System.Windows.Forms.Control.OnHandleCreated(EventArgs e)
bei System.Windows.Forms.Control.WmCreate(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ScrollableControl.WndProc(Message& m)
bei System.Windows.Forms.ContainerControl.WndProc(Message& m)
bei System.Windows.Forms.UserControl.WndProc(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Klicke ich in der Box auf weiter, so greift sofort danach mein Exceptionhandler und sagt mir dass ich ein Control aus einem Thread nicht einem Control aus einem anderen Thread hinzufügen kann.
Mit dem Stack des ersten Fehlers kann ich leider wenig anfangen und ich habe schon mehrmals geprüft, dass das Control wirklich im gleichen Thread erstellt wird (was in meinen Tests der Fall war, aber offensichtlich nicht immer). Meine Main-Methode ist mit STAThread gekennzeichnet.
In letzter Zeit tritt der Fehler auch nicht mehr bei meinem Rechner auf, allerdings auf dem eines Freundes sehr häufig.
Komisch ist ebenfalls, dass ich den Fehler nur dann beobachten konnte, wenn mein Control ein animiertes GIF darstellt (per GDI+ und ImageAnimator), allerdings prüfe ich im OnNextFrame auf InvokeRequired und handle entsprechend.
Ich habe auch ein wenig das VB-Framework im Verdacht, das benutze ich nämlich für die Darstellung eines Splash-Screens. Ich kann nur bei mir nicht testen, da der Fehler wie gesagt irgendwie nicht mehr auftritt und mein Freund hat leider wenig Zeit. Ich versuche mal morgen bei ihm eine Version ohne VB-Splash zu testen.

Vielleicht habt ihr ja noch Ideen.
PS: Falls Code benötigt wird, stehe ich natürlich zur Verfügung. Ich wollte nur jetzt nicht das halbe Programm posten, da ich ja nicht weiß, welche Teile interessant sein könnten.

Grüße, JasonDelife.

Thema: Warum darf man Referenztypen in Strukturen deklarieren?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Soweit ich weiß, wird der String wie gewöhnlich auf dem Heap abgelegt. Was spricht dagegen? Was in der Struktur (also auf dem Stack) gespeichert wird, das ist die Referenz (welche ja im Grunde ein Integer mit 32 bzw. 64 Bit ist). Aber wenn ich eine Methode mit einer Variable eines Refrenztyps habe, dann liegt die Referenz auch auf dem Stack im Bereich der Methode.
Ich bin mir aber auch nicht hundertprozentig sicher.
Vielleicht kann ja herbivore oder jemand anders das besser erklären.

Grüße, JasonDelife.

Thema: Windows runterfahren in C#
Am im Forum: Rund um die Programmierung

http://mentalis.org/soft/class.qpx?id=7
Verwenden musst du es aber schon selbst können!

Grüße, JasonDelife.

Thema: Eigener MausZeiger in mehr als 1-Bit Auflösung?
Am im Forum: GUI: Windows-Forms

http://www.codeproject.com/KB/cs/ExtCursors.aspx

Grüße, JasonDelife.

Thema: Spieleprogrammierung: Sind C#-Programme mittlerweile schnell genug?
Am im Forum: Grafik und Sound

@Siassei
Was ist denn mit Mono? Sims 3 zum Beispiel läuft auch auf dem Mac.

Viele Grüße, JasonDelife.

Thema: Spieleprogrammierung: Sind C#-Programme mittlerweile schnell genug?
Am im Forum: Grafik und Sound

Also es gibt ja XNA von MS und IrrLicht hat zumindest einen .NET-Wrapper.
Es gibt auch ein Spiel, welches auf Basis von C# und Managed DirectX (mittlerweile veraltet) basiert: Arena Wars (wenn ich mich recht entsinne).
Und auch Sims 3 ist größtenteils in C# geschrieben, die gesamte Game-Logik auf jeden Fall.
Ich könnte mir gut vorstellen, dass es in Zukunft mehr in richtung "Managed Games" geht, aber wie lange es dauern wird, bis sich das auf dem Markt behaupten kann, wer weiß...
Ich würd's mir auf jeden Fall wünschen .

Grüße, JasonDelife.

Thema: Anderes Fenster in Vordergrund holen
Am im Forum: GUI: Windows-Forms

Gibt es da nicht eine Funktion FindWindow?
EDIT: http://pinvoke.net/default.aspx/user32.FindWindow
Und herbivore's EnumWindows: http://pinvoke.net/default.aspx/user32.EnumWindows

Grüße, JasonDelife.

Thema: Herausfinden ob Vmware läuft
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Du kannst es nicht lassen oder?
Crosspost: http://www.coding-board.de/board/showthread.php?t=29296

Grüße, JasonDelife.

[EDIT=herbivore]geschlossen wegen [Hinweis] Wie poste ich richtig? Punkt 2.2[/EDIT]

Thema: Bilder in sehr hoher Qualität verkleinern
Am im Forum: Grafik und Sound

Crossposts sind nicht gerne gesehen: http://forum.fachinformatiker.de/net/135672-bilder-verkleinern-qualitaet-php.html

Grüße, JasonDelife.

[EDIT=herbivore]geschlossen wegen [Hinweis] Wie poste ich richtig? Punkt 2.2[/EDIT]

Thema: 81 Buttons, aber nur einen EventHandler?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Wie wärs mit OfType<T>()?


foreach(Button btn in this.Controls.OfType<Button>()) {
 // Code
}
PS: Alle Daten in einer von Button abgeleiteten Klasse, ist das nicht total gegen OOP?

Grüße, JasonDelife.

Thema: Fehlerhaftes Zeichnen des GUI trotz BGW
Am im Forum: GUI: Windows-Forms

Du greifst aus dem DoWork-Event auf Controls zu. Das darf man niemals tun!
Außerdem wäre es vllt. für die Performance gut das Ergebnis zu puffern und nur alle 25 gefundenen Dateien das GUI zu aktualisieren.

Grüße, JasonDelife.

Thema: Monopoly-Spiel
Am im Forum: Projekte

Wirklich cool, muss man schon sagen!
Hut ab.

Grüße, JasonDelife.

Thema: typeof() auch bei Vererbung?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen


Oh ja... Ist mir gar nicht aufgefallen.

Grüße, JasonDelife.

Thema: typeof() auch bei Vererbung?
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Würds ein einfaches "is" nicht auch tun?
Es prüft ja, ob sich das Objekt in den Typ casten lässt. Bei der Prüfung


derivedVariable is BaseClass
ist das ja der Fall.

Grüße, JasonDelife.

Thema: Icon einer exe ändern?
Am im Forum: Rund um die Programmierung

Och, nicht schon wieder...
-> Crosspost
Hast du überhaupt mal Google bemüht?
Wir werden hier nicht deine Aufgaben lösen.

Grüße, JasonDelife.

Thema: Fehlertolerant String in Zahl umwandeln
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

@Flo:
Du meinst sicher


double d;
if (!double.TryParse(sEingabe, out d)) {
   // show error
   return;
}

// ...


Grüße, JasonDelife.

Thema: [gelöst] Win-API ExitWindowsEx Problem
Am im Forum: Rund um die Programmierung

Der WindowsController von Mentalis.org kann das: http://mentalis.org/soft/class.qpx?id=7
Du kannst dir ja den Code ansehen. Wobei man dann auch gleich den nehmen kann :).

Grüße, JasonDelife.

Thema: string auffüllen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

String.Format() ist hier wohl ganz nützlich:
MSDN: Übersicht zur Formatierung

Grüße, JasonDelife.

Thema: [erledigt] Maximieren durch Doppelklick in Titelleiste verhindern
Am im Forum: GUI: Windows-Forms

Was ist denn damit?


MaximizeBox = false
EDIT: Bei mir (Win7) getestet: Es geht.

Grüße, JasonDelife.

Thema: Advanced Password Generator
Am im Forum: Projekte

Hallo markus111.
Der Generator ist gut geworden. Und hat ein schönes Icon ;).
Was mir aufgefallen ist:
Nimmt man nur die Option "Andere Zeichen", dann kann man die Häufigkeit der Zeichen bestimmen, indem man ihre Anzahl variiert.
Konkret: Gebe ich bei "Andere Zeichen" z. B. "aaaaaaaaab" ein, so quillt das Passwort vor a's über. Eventuell könnte man einen Check programmieren, der sicherstellt, dass jedes Zeichen nur einmal vorhanden ist.

Grüße, JasonDelife.

Thema: [erledigt] VS Express 2008 Form Designer auf Pascal-Case umstellen?
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Soweit ich mich erinnere ist laut Microsoft bei privaten Membern Camel-Case, bei allen anderen Pascal-Case angesagt. Es wäre also klein geschrieben schon richtig.

Grüße, JasonDelife.

Thema: Colors vergleichen
Am im Forum: Grafik und Sound

So ist's ein wenig schöner:


private bool CompareColors(Color col1, Color col2, int epsilon) {
    return Math.Abs(col1.R - col2.R) < epsilon &&
              Math.Abs(col1.G - col2.G) < epsilon &&
              Math.Abs(col1.B - col2.B) < epsilon;
}
Von der Geschwindigkeit ist da wohl wenig rauszuholen.

Grüße, JasonDelife.

Thema: [erledigt] Aufbau einer Visual Studio Projektmappe
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Die Ordner repräsentieren Build-Konfigurationen. Debug und Release sind die vordefinierten. Bei Debug werden Debug-Infos in den Assemblys gespeichert und der Compiler optimiert nicht. Somit wird das Debuggen einfacher.
Bei Release wird optimiert. Diese Konfiguration ist für die fertige, auszuliefernde Version gedacht. Oben in der Toolleiste kann man zw. den Konfigurationen wechseln.
(Bei den Express Editions lässt sich die Konfiguration nicht umstellen, sondern wechselt dynamisch.)

Grüße, JasonDelife.

Thema: Schneller Downloaden
Am im Forum: Web-Technologien


Entschuldigung, mein Fehler. Wusste nicht, dass der WebClient die Events im GUI-Thread feuert. In dem Fall ist Invoke() natürlich unnötig.

Grüße, JasonDelife.

Thema: Schneller Downloaden
Am im Forum: Web-Technologien

Bei BerndFfms Lösung wäre noch zu beachten: [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke)

@BerndFfm: Eine Scrollbar? ;)


Grüße, JasonDelife.

Thema: WebBrowser in Thread aufrufen (ich bekomme eine Fehlermeldung)
Am im Forum: GUI: Windows-Forms

Ich wüsste nicht, warum [FAQ] Controls von Thread aktualisieren lassen (Control.Invoke) nicht auch bei ActiveX-Interop gelten sollte.
Oder hast du das schon?

Grüße, JasonDelife.

Thema: Probleme mit FormClosing-Event
Am im Forum: GUI: Windows-Forms

Hast du bei Process EnableRaisingEvents auf true?
Sonst werden keine Events gefeuert.

Grüße, JasonDelife.

Thema: [gelöst] 2te Form anzeigen
Am im Forum: GUI: Windows-Forms

Du musst die Form erst instanziieren:


// InfoDialog ist die Form
InfoDialog info = new InfoDialog();
info.ShowDialog();

Grüße, JasonDelife.

Thema: Icons aus Shell32.dll und jetzt auch anderen DLLs
Am im Forum: .NET-Komponenten und C#-Snippets

Cool.
1. Könntest die Klasse ja ShellIconHelper nennen.
2. Eine Enumeration ShellIcon wäre eine enorme Erleichterung.
Dann könnte man schreiben:


Icon myIcon = ShellIconHelper.GetLargeIcon(ShellIcon.FontFolder);
Das wäre lesbarer als 38.
PS: Vllt. mache ich das heute noch, wenn ich Zeit finde.
EDIT: Habe leider keine Zeit.

Grüße, JasonDelife.