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 mosspower
Thema: [Gelöst] - SQL query OracleCommand Objekt
Am im Forum: Datentechnologien

verwendetes Datenbanksystem: Oracle Database 11g Express Edition

Hallo,

NHibernate ist nicht (aus betriebsinternen Gründen), deshalb bastele ich gerade in meiner neuen Firma so eine Art OR-Mapper (bitte keine weiteren Fragen warum, bzw. nich Entity-Framework usw.)
Nun möchte ich aus Debuggründen mir die ausgeführten SQL-Statements anzeigen lassen.
Muss ich mir die SQL statements, so wie sie "abgefeuert" werden selber zusammenbauen, also selber die Parameter in den SQL-Befehlen ersetzen oder komme ich irgendwie nach dem Execute innerhalb des OracleCommand-Objekts an den ausgeführten Query?

Thema: [Gelöst] - Alternative bei Reflection zu GetProperty mit fixem String
Am im Forum: Rund um die Programmierung

Vielen Dank für die Lösung und gleich noch was zusätzlich gelernt!

Thema: [Gelöst] - Alternative bei Reflection zu GetProperty mit fixem String
Am im Forum: Rund um die Programmierung

Hallo,

ich brauche von einem Property den aktuellen Wert und einen bestimmten Wert von einem Property-Attribute.

Jetzt ist ja die "herkömmliche" Vorgehensweise so, dass man mit GetProperty("PropertyName") eine Instanz von PropertyInfo erhält und dann kann ich mittels GetValue an den aktuellen Wert kommen und mit GetCustomAttributes eben an den Attributewert.

Was mir an dieser Lösung nicht gefällt ist der "fest verdrahtete" String in der GetProperty-Methode.
Klar, ich kann Konstanten festlegen, aber ich stelle mir die Frage, ob es nicht eine schönere Lösung gibt, wo mittels der Property der Klasseninstanz die Werte abgefragt werden können.

Bei Threads ist es doch auch so, dass man mit dem Delegate den Methodennamen angibt.

Ich hätte gerne eine Lösung in der Art:


// The classic way
PropertyInfo propertyInfo = this.GetType().GetProperty("Description")
// The other way?
PropertyInfo propertyInfo = this.GetType().GetProperty(this.Description[Delegate?].getName())

Description ist der Name des Properties, ich möchte direkt mit der Instanz arbeiten, so dass ich den fest verdrahteten String, hier "Description" vermeiden kann.

Geht das irgendwie?

Thema: Aktuelle Ausführungszeile nach Anhalten bei Breakpoint (im catch) rückwärts bewegen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Also, ich habs jetzt auf x86 gestellt und geht auch nicht ... hab VS2010 auf 64 Bit Windows 7 Ultimate .. ich muss da irgendwann mal verstellt haben, anders kann ich mir das nicht erklären. Ich bin mir 100 Prozent sicher, dass ich von catch in try-Block verschieben konnte, nachdem die Exception beim Breakpoint im catch-Block angehalten wurde.

Thema: Aktuelle Ausführungszeile nach Anhalten bei Breakpoint (im catch) rückwärts bewegen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Also, bei mir geht das nicht mehr, wenn eine Exception geworfen wurde und ich einen Breakpoint ins catch setze. Bleibt stehen und ich kann nicht mehr verschieben, bzw. wenn ich die Maustaste nach dem Drag loslasse passiert nix .... ich hab das oft benutzt um so schnell den Fehler zu finden, dass ich dann aus dem catch an die Stelle geschoben hab, wo ich den Fehler vermutet habe (klar, man kann auch in Stacktrace schauen und, und und ... aber das dauert halt) ...

Aktuell kann ich nur noch "schieben", wenn keine Exception geflogen ist - das funktioniert weiterhin - hm, sehr komisch ... sind alles Any CPU-Projekte

Thema: Aktuelle Ausführungszeile nach Anhalten bei Breakpoint (im catch) rückwärts bewegen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Ich erklär es nochmal.

Ich setze irgendwo einen Breakpoint und der Code stopt an der Stelle. Jetzt war es vorher immer möglich, dass ich rechte mit der Maus über den Breakpoint gefahren bin (in dem sich jetzt ein gelber Pfeil befindet) und just in dem Moment, wo ich mit dem Mauszeiger über dem Breakpoint bin, ändert sich das Mausicon zu einem schwarzen Pfeil - wenn ich jetzt die linke Maustaste gedrückt habe, konnte ich den Breakpoint per drag in eine x-beliebige Zeile schieben - ich hab das immer verwendet um in eine Zeile möglichst vor dem Fehler zu navigieren und dann eben "ganz normal" mit Step Over weitergemacht von der "neuen Zeile"

Hm, ist es jetzt verständlicher? Ich hoffe es

Zitat von Th69
du meinst wohl, du möchtest die aktuelle Ausführungszeile ändern (current line), d.h. den gelben Pfeil?

Ja, genau das meinte ich - ich kann die Zeile mit dem gelben Pfeil "ganz normal, wie gewohnt" verschieben, wenn keine Exception geworfen wurde, aber bei Exceptions funktioniert das bei mir nicht mehr und genau da brauch ich es aber überwiegend - hm, da muss ich wohl mal was verstellt haben

Thema: Aktuelle Ausführungszeile nach Anhalten bei Breakpoint (im catch) rückwärts bewegen
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

ich kann bei meiner aktuellen Konfiguratiion den Breakpoint, wenn eine Exception geworfen wird, nicht mehr bewegen - wo kann man das einstellen?

Problem ist: Ich setze den Breakpoint in die catch-Anweisung und möchte dann, wenn er dort stehenbleibt, in die try-Anweisung navigieren, um so den Fehler zu finden - hab das jahrelang so gemacht, aber aktuell geht das nicht mehr bei meiner Konfiguration - arbeite mit VS2010.

Vielen Dank für Hilfe schon mal im voraus.

Thema: [erledigt] VS 2010 sehr langsam auf einmal [==> Wechselwirkung mit Virenscanner]
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Mein Gott, vielen, vielen Dank - Norton war es .. wenn ich den kurz deaktiviere, dann funzzt alles wie gewohnt ... da wär ich nie draufgekommen

Thema: [erledigt] VS 2010 sehr langsam auf einmal [==> Wechselwirkung mit Virenscanner]
Am im Forum: Entwicklungs- und Laufzeitumgebung (Infrastruktur)

Hallo,

ich hoffe, mir kann jemand helfen - ich hab heute schon 3 Stunden Arbeitszeit damit "verbraten" ... seit heute dauert das starten von Programmen (egal ob aus der IDE oder EXE) immer vorab 30 Sekunden - es passiert vorher nichts. Auch in der Entwicklungsumgebung, wenn das Programm schon läuft und ich einen Breakpoint setzen möchte, dann erscheint die "berühmte" Sanduhr und ich muss 30 Sekunden warten, bis der Breakpoint gesetzt wird - so kann man nicht arbeiten.

Hat jemand eine Idee? - ich hab die suo-Datei, alle obj-Dateien und die kompletten Usereinstellungen unter Users\AppData auch schon gelöscht - hat alles nichts gebracht ... da dreht man ja durch ... Neustarts helfen auch nix. X(

Thema: Beim TreeView feststellen, ob ein Scrollbar angezeigt wird
Am im Forum: GUI: Windows-Forms

Hi,

gibt es eine Möglichkeit bei einem TreeView festzustellen ob eine Scrollbar aktuell angezeigt wird oder nicht? - ich bräuchte das, weil ich dann je nach dem globales Scrollen des Hauptpanels zulasse oder eben scrollen in der TreeView, wenn Scrollbar sichtbar - hab da nichts gefunden bis jetzt.

Thema: [Erledigt] - Remote Desktop IP-Adressen-Beschränkung
Am im Forum: Netzwerktechnologien

Oh man, die stellen zweimal die gleiche Regel (RD und Remote Desktop (TCP eingehend)) initial zur Verfügung .. klar, dann kann es net gehen. ;(

Thema: [Erledigt] - Remote Desktop IP-Adressen-Beschränkung
Am im Forum: Netzwerktechnologien

Hi,

ich bin wahrlich kein Administrator, hatte aber bisher immer vServer mittels IP-Adresse in der Windows-Firewall unter (inbound -> Scope) und dann eben die zulässigen IP-Adressen eingetragen - hat bisher immer funktioniert.

Jetzt hab ich aktuell einen vServer von HostEurope und der (Firewall ist natürlich auch aktiv) ignoriert das vollkommen - egal was ich da einstelle, ich komm von jedem Rechner aus druff - auch nach Neustart.

Muss ich da noch was einstellen oder ist das "Problem" von HostEurope?

Hier die Einstellungen: Remote-Einstellungen Screenshot

Gruß und Danke schon mal für etwaige Hilfe im Voraus!

Thema: Zyklisches Logging von identischen Fehlern verhindern
Am im Forum: Rund um die Programmierung

OK, vielen Dank für die Antworten.

Wäre jetzt ja nicht mein erster Appender: log4Net - ArchivRollingFileAppender ... ich dachte halt, ich frag erst mal hier nach, bevor ich mit einem Appender beginne, weil evtl. es schon eine Lösung gibt, die mir nicht bekannt ist - man soll ja net immer das Rad neu erfinden (sonst werden wir ja nie fertig)

Gruß und Danke für die Antworten und Anregungen.

Thema: Zyklisches Logging von identischen Fehlern verhindern
Am im Forum: Rund um die Programmierung

Hi,

ich benutze log4net beim Logging und hätte mal eine Frage bezüglich von zyklisch auftretenden, identischen Fehlern - kann man das irgendwie innerhalb des Frameworks handeln oder muss man da was eigenes programmieren?

Ein Beispiel wäre eine Verbindung, die nicht zur Verfügung steht für 5 Minuten, aber in einem Thread wird jede Sekunde versucht auf die Verbindung zuzugreifen. Ohne weitere Anpassungen hat man jetzt im Logfile 300 identische Fehlermeldungen stehen, dass die Verbindung nicht vorhanden ist - klar, kann man da schnell selber was programmieren, dass nur beim 1. Auftreten des Verbindungsausfalles gelogged wird und danach nicht mehr ... war aber nur ein Beispiel von vielen, um die Problematik verständlich zu machen.

Meine Frage jetzt. Gibt es da schon was - Problematik tritt ja sehr häufig auf im Zusammenhang mit Threads und zeitkritischen Sachen, gerade bei Connections (Internet, Datenbanken) oder Fileverarbeitung auf.

Gruß und Danke schon einmal für etwaige Antworten im Voraus!

Thema: Chrome Tabs schließen
Am im Forum: Rund um die Programmierung

Hallo,

gar keine so schlechte Idee .. ich werde da mal reinschauen:

http://developer.chrome.com/extensions/tabs.html

Thema: Chrome Tabs schließen
Am im Forum: Rund um die Programmierung

Hallo,

hat von euch jemand eine Idee, wie man Tabs in Chrome schließen kann?
Problem ist bei mir, dass ich, Situation vorausgesetzt, zig gleichartige Tabs in Chrome offen hab und ich möchte die soz. verwalten und alle unnützen schließen mittels einem C#-Programm.

Alternativ würde es mir natürlich auch ausreichen, wenn ich ein benötigten Tab eben nicht doppelt öffnen würde, sondern bei Bedarf einfach aktiv schalten, bzw. einfach rechts-außen im Browserfenster zu positionieren.

Es geht eben darum, einen geöffneten (nicht aktiven Tab) bei Bedarf sofort aktiv zu setzen, bzw. ihn im Browserfenster sofort zu sehen - aktuell ist es so, dass es viel schneller geht, mittels C# einen Tab nochmals aufzumachen (welcher dann ja aktiv ist) als "ewig" den bereits offenen zu suchen - also, ist eben sehr zeitkritisch und dann, bei Hochbetrieb, hab ich schon mal zig Tabs offen, von denen viele doppelt und mehrfach vorhanden sind.

Hat hier jemand eine Idee, wie man das angehen kann - Command Lines scheint er nicht zu verstehen - bisher hab ich dazu nichts gefunden.

Danke schon mal für etwaige Hilfe im Voraus.

Thema: Möglichkeiten für automatischen Windows Neustart, wenn der Rechner eingefroren ist
Am im Forum: Rund um die Programmierung

OK, vielen Dank für das Feedback hier

... Watchdog-Karten (oder USB) war für mich bisher völlig unbekannt. Hat jemand damit Erfahrungen, bzw. funktionieren die dann auch, wenn es einmal im Jahr dann drauf ankommt?

Thema: Möglichkeiten für automatischen Windows Neustart, wenn der Rechner eingefroren ist
Am im Forum: Rund um die Programmierung

Ich hab heute Nacht jetzt schon eingebaut, dass ich ihn mittels Befehl runterfahren kann - total "billig" gemacht. Also, alle 5 Minuten schickt er eine Testmeldung an den (Haupt) Server und als Antwort kann man dann mitgeben, wenn gewünscht, dass er den Befehl "shutdown -r" ausführen soll ... soweit so gut, ich bezweifle aber, dass es eben überhaupt noch zur Testmeldung kommt und auf dem Rechner eben überhaupt keine Befehle mehr ausgeführt werden ... war gestern auch so (kein Webserver, keine Befehle mehr, kein RD ect., nix mehr ging) war alles eingefroren.

Nun war es das erste mal - die Dinger laufen auch schon beide fast über ein Jahr, aber es ist halt nervig, wenn man nicht vor Ort ist, bzw. selber nix machen kann. Ich will da einfach eine Lösung einbauen, so dass ich (und auch die anderen) ihre Ruhe haben.

Thema: Möglichkeiten für automatischen Windows Neustart, wenn der Rechner eingefroren ist
Am im Forum: Rund um die Programmierung

Ja, das die Standardeinstellung und hat (natürlich) auch nicht geholfen.

Was könnt ihr für (Relais) Schaltsteckdosen empfehlen? ... GSM ist zwar schön, aber dann jeweils noch Prepaid-SIM rein und jedes Jahr neu aufladen ist halt auch net so der Bringer (würde ich halt nur zur Not machen) ... optimal wäre, wenn es eine Art Webserver in der Steckdose gäbe und man diese via IP ansteuern könnte und dann eben einen (Stromzufuhr) Reset durchführen.

Thema: Möglichkeiten für automatischen Windows Neustart, wenn der Rechner eingefroren ist
Am im Forum: Rund um die Programmierung

Hallo,

gibt es eine mögliche Einstellung (Registry ect.), wenn Windows für eine bestimmte Zeit hängt, einen automatischen Neustart durchführen zu lassen?
Mir ist heute zum ersten mal passiert, dass Windows auf meiner Kiste völlig "eingefroren" ist (Eventlog sagt, Resourcen haben gefehlt, Bluescreen ect., hab aber leider den Fehlercode jetzt nicht) ... naja, mir fehlen über 1 Stunde, nix im Eventlogger und auch hab ich dort Windowsservice laufen, der alle 5 Minuten ein DynDns-Update macht, nix mehr im Logfile für die Zeit gefunden, als ob er tot gewesen wäre, keine Loggingeinträge .. Eventlogger erst wieder, nachdem ein Neustart an der Kiste durchgeführt wurde.

Da mir das zur gleichen Zeit auf zwei verschiedenen Kisten passiert ist, gehe ich von aus, dass ein Update dafür verantwortlich war und dann Flash die Kisten zum erliegen gebracht hat - da ich nicht vor Ort bin, hatte ich aber beides mal Feedback bekommen, dass die jeweiligen Kisten liefen (sieht man auch im Eventlog, dass erst Shutdown kurz vor Logon nach der Stunde)

OK, das war jetzt so die Kurzgeschichte ...

Ich wollte einfach wissen ob es halt möglich ist, bei solchen Fällen, wenn alles eingefroren ist, einen Restart zu erzwingen ... mach mir da jetzt net so groß die Hoffnung, denn wenn keine Resource mehr da sind oder intern nix mehr läuft, dann wird auch so eine Einstellung nix mehr nutzen? - jemand eine Idee, bzw. Erfahrungen damit gemacht?

Was mir zur Not einfällt: im BIOS einstellen, automatischer Restart nach Stromunterbrechung und dann mit einemr GSM-Schaltsteckdose via SMS den Strom kurz unterbrechen:

GSM-Schaltsteckdose

Thx schon mal im Voraus für Antworten und Anregungen.

Thema: IIS 7.5 Timeout-Problem [gelöst]
Am im Forum: Netzwerktechnologien

Also, das Problem ist zwar nicht behoben aber ich habe kurzfristig eine andere Lösung programmiert. Anstatt die Daten via POST zu senden, wird jetzt nur noch eine Download-ID via POST gesendet und dann holt sich der Rechner die Daten via Download.

OK, zugegeben, wir gehen hier zweimal übers Netz für eine Nachricht, aber

a) es funzzt (das ist mal sehr wichtig)
b) Download ist schneller als Upload (somit ist die Gesamtverarbeitungszeit einer Nachricht in etwa gleich geblieben)

Ich hab ehrlich gesagt keine Ahnung woran das liegen könnt - ich tippe schwer auf den Anbieter (hier Tele2 Österreich). Es war wirklich so, dass POSTs nach einer bestimmten Zeit nicht mehr durchgelassen wurden (also, beim Server kam nix mehr an, nur noch Timeouts) ... egal, gelöst .. wir wissen ja alle, Sachen gibt es, die darf es eigentlich nicht geben.

Danke für die Hilfe!

Thema: IIS 7.5 Timeout-Problem [gelöst]
Am im Forum: Netzwerktechnologien

OK,

1. Mit dem Ping habe ich mich "entschuldigt" ... ist ein ganz normaler Request via HttpWebRequest-Objekt an den Server ... somit sollte das klar sein

2. Wir wollen jetzt nicht darüber diskutieren, was es für eine "Art von Anwendung" und warum diese Art von Anwendung es ist. Nur soviel, IIS dient in dem ganzen Konstrukt nur dazu, Nachrichten aufzunehmen, bzw. auszutauschen und beim Request schreibt IIS-Anwendung (also ASPX-Seite) die Nachrichten "nur" auf die Platte und ein Sevice auf dem jeweiligen Rechner verarbeitet dann die Nachrichten, welche aber beim Fehler gar nicht geschickt werden können, da das HttpWebRequest-Objekt eben den Timeout-Error zurückbringt als Fehler.

3. Es gibt kein Load-Balancing oder ähnliches, läuft alles (aktuell sogar "nur" sequentiell) über einen IIS-Server auf den jeweiligen Rechnern und ist mein privates Projekt.

Thema: IIS 7.5 Timeout-Problem [gelöst]
Am im Forum: Netzwerktechnologien

OK, sorry, da hab ich mich anfangs dann bißchen falsch ausgedrückt.
Es handelt sich hier nicht um eine "klassische" Webanwendung.

Der Client schickt "stink normale" HTTP-POST-Anfragen mittels WebRequest an den Server. Was halt wirklich komisch ist, ist die Tatsache, dass ein Befehl, welchen ich PING nenne (der ist nun mal kürzer, was die Zeichen betrifft, ansonsten gibt es imo keine Unterschiede, denn die Schnittstelle ist ja die gleiche) immer funktioniert und die anderen dann auf genau diesem Rechner nicht mehr, nachdem er halt eine Zeit lang "Idle" war.

Zu 100 Prozent kann man natürlich Prgrammierfehler nicht ausschließen aber hier wird eben "nur" ein Request an den Server geschickt, der eben, bei den aufgezählten Konstellationen, einfach net mehr durchkommt und im "laufenden Betrieb" funktioniert auch alles soweit - sehr komisch.

Ich schaue mal weiter gründlich nach ob ich was finde - dachte mir halt auch, dass ggf. jemand hier auch schon mal das Phänomen erlebt hat ... ggf. doch mal Wireshark draufspielen und überwachen ob das Ding überhaupt reinkommt - dir Danke erst mal.

Thema: IIS 7.5 Timeout-Problem [gelöst]
Am im Forum: Netzwerktechnologien

Hm,

erst mal Danke für die Antwort.

Ping bedeutet nur, dass die Payload eben weniger Zeichen hat - ich schicke verschiedene Nachrichten programmiertechnisch immer gleich hin mit einer unterschiedlichen Länge der Payload und bei einem Ping-Befehl ist eben die Payload am geringsten und komischerweise funzzt das immer ... wenn es der Sleep-Mode sein sollte, dann würde das ja bedeuten, dass er a) nicht mehr aufwacht und b) nur noch Befehle mit einer Payload von einer gewissen Länge verarbeitet ... ich schau mal was ich unter Server Profiling finde, weil das Problem echt nervig ist ... ich denke aber, der Befehl kommt gar nicht erst bis zum Server durch und wird vorher (Internetprovider, Firewall ect.) einfach geblockt ... ich find ja auch nix im Server-Logfile.

Programmierfehler kann definitiv ausgeschlossen werden, weil gleicher Build auf aktuell 6 Servern läuft und das vollkommen ohne Probleme (bis eben auf die eine Ausnahme und das jetzt im 6. Tag hintereinander und hatte vorher nie Probleme damit)

Thema: IIS 7.5 Timeout-Problem [gelöst]
Am im Forum: Netzwerktechnologien

Hallo,

ich "erleide" seit ca. einer Woche ein sonderliches Verhalten meiner Anwendung und dachte, hier kann mir ggf. jemand helfen - die Problematik tauchte vorher nie auf, das Programm lief ohne Probleme über ein halbes Jahr bis jetzt.

Folgende Problematik: Ein Client schickt BASE64 encoded Daten (via HTTP-POST) an einen Rechner (IIS 7.5) und dort werden die Daten weiterverarbeitet. Die Länge der Zeichen im POST sind unterschiedlich je nach Befehl, jedoch max. 5000 Zeichen. Benutze ich nun das System mehrere Studen nicht mehr (z.B. über Nacht ect.) dann stelle ich aktuell jeden Tag folgendes Verhalten fest:

Bei einem Befehl (PING) funktioniert alles noch wie erwartet aber bei allen anderen Befehlen bekomme ich einen Timout-Fehler. Der PING-Befehl ist von den Zeichen her der Befehl mit dem kleinsten Payload - ggf. kann es daran liegen? ... IIS logged bei den Timeout nichts, bei PING-Befehl schon, da geht ja auch alles - es scheint, dass bei den Timouts überhaupt nichts beim Rechner ankommt. Komischerweise kann ich auch IIS nicht beenden, bzw. Neustarten - er dreht dann einfach ewig und macht nix. Das einzige, was hilft, ist ein kompletter Neustart des Rechners, dann funktioniert alles wieder und das für Stunden (4 bis 10 je nach Gebrauch) - lass ich dass dann wieder ein paar Stunden in Ruhe, geht alles wieder von vorne los.

Was kann das denn jetzt sein - hat jemand eine Idee, bzw. schon einmal ein ähnliches Verhalten festgestellt - ich bin am verzweifeln hier, weil das ja wirklich "unglaublich" ist, was da geht, bzw. nicht geht.

Programmfehler ist ausgeschlossen, weil es nicht nur vorher ein halbes Jahr ging, nein, es laufen auch noch aktuell 6 andere "Empfangsrechner", bei denen konnte ich ein derartiges Verhalten noch nie feststellen.

Kann es ggf. am Internet-Provider, Einstellungen Router ect. liegen? ... ich weiß nicht weiter - aktuell starte ich einfach den Rechner neu und gut ist - natürlich soll das keine Dauerlösung sein.

Danke schon mal für Hilfe und Anregungen im Voraus!

Thema: Webbrowser control JavaScript ändern
Am im Forum: Web-Technologien

Hallo,

gibt es eine Möglichkeit an den geladenen externen Quellcode von JavaScript zu kommen, wenn man das Control WebBrowser einsetzt.

Embeded code lässt sich ja mit DocumentText sehr schön und leicht ändern, wie aber sieht es aus, wenn es ein externes Script ist.

mit document.scripts[index].src kommt man ja nur an den Resource-Pfad, aber nicht an den Qutelltext.

Ich möchte aktuell ein nerviges alert ausschalten, habe aber keine Idee mehr, wie ich das machen könnte.

Würde ggf. funktionieren document.scripts[index].src = "" // also auf empty setzen
und dann den ursprünglichen Quellcode ins aktuelle Dokument embeden ohne mit auskommentiertem alert?

Danke schon mal für etwaige Hilfe im voraus!

Thema: [erledigt] InvokeRequired in Basisklasse für Control kapseln
Am im Forum: GUI: Windows-Forms

OK, ich will mich dann nochmal bei allen bedanken.
Ich war irgendwie auf einer völlig falschen Fährte - es klappt jetzt mit der Thread-Methode in der Basisklasse:

private void WebBrowserWaitBackgroundThread(Object threadParams) {
      if(this.webBrowser.InvokeRequired) {
        this.webBrowser.Invoke(new WebBrowserWaitBackgroundThreadDelegate(WebBrowserWaitBackgroundThread), threadParams);
      }
      else {
        Object[] args = (Object[])threadParams;
        WebBrowserWaitBackgroundCallback webBrowserWaitBackgroundCallback = (WebBrowserWaitBackgroundCallback)args[0];
        int timeout = (int)args[1];
        String controlName = (String)args[2];

        if(webBrowserWaitBackgroundCallback != null) {
          if(!String.IsNullOrEmpty(controlName)) {
            // Handle configured control
            int activityCounter = 0;
            int increment = 5;

            // Maximum 15 seconds timeout
            while(activityCounter < TimeSpan.FromSeconds(15).TotalMilliseconds) {
              // Check control exists and has content
              HtmlElement controlElement = null;

              try {
                controlElement = this.webBrowser.Document.GetElementById(controlName);
              }
              catch {
                // Ignore this one, document could be null due to loading process
              }
            
              if(controlElement != null && !String.IsNullOrEmpty(controlElement.InnerText)) {
                break;
              }

              Application.DoEvents();
              Thread.Sleep(increment);
              activityCounter += increment;
            }
          }
          else {
            // Handle configured timeout
            if(timeout > 0) {
              int activityCounter = 0;
              int increment = 5;

              while(activityCounter < timeout) {
                Application.DoEvents();
                Thread.Sleep(increment);
                activityCounter += increment;
              }
            }
          }

          // Invoke callback ==> HIER WIRD DIE Methode in der Subklasse aufgerufen !!! - InvokeRequired-Check nun nicht mehr notwendig in der Subklassen-Methode  :)
          webBrowserWaitBackgroundCallback.Invoke();
        }
      }
    }

Dank euch allen für die Hinweise - Thread solved!

Thema: [erledigt] InvokeRequired in Basisklasse für Control kapseln
Am im Forum: GUI: Windows-Forms

Ich erklär nochmal kurz die Problematik.

Ich habe eine Basisklasse, in dieser gibt es ein WebBrowser Control.
Jetzt kommt es vor, dass viele Webseiten mit AJAX arbeiten, so dass man bestimmte Controls oder Werte erst nach bestimmter Wartezeit angezeigt bekommt, weil hier funktionieren die WebBrowser-Control-Events DocumentCompleted ect. nicht, da es ja keinen kompletten Server-Roundtrip gibt und das Dokument ja nicht komplett neu geladen wird.

Jetzt habe ich eine Wait-Methode in der Basisklasse eingebaut, die solange "aussetzt", wie Timeout übergeben wird oder bis eine bestimmte ID in dem aktuellen Dokument gefunden wird.

Das Problem scheint zu sein, dass ich in dem Thread der Basisklasse widerum einen Delegaten aufrufe und immer dann ist ja InvokeRequired true.

Was ich jetzt noch mal probiere ist, den Methodennamen als String zu übergeben und in der Basisklasse / Thread der Basisklasse mittels Reflection die Methode in der Subklasse aufzurufen - ich denke, das wird funktionieren. Die Threadmethode prüft natürlich vorher gegen InvokeRequired und ja, es war ein Fehler von mir mit this.InvokeRequired, ich habe natürlich das Ausgangscontrol gemeint aber in der Schnelle noch das alte Zeugs hier reinkopiert - sorry!

Thema: [erledigt] InvokeRequired in Basisklasse für Control kapseln
Am im Forum: GUI: Windows-Forms

Hallo gfoidl,

ich suche nach einem Weg, die Abfrage nach InvokeRequired in die Basisklasse auszulagern.

Es kommt sehr oft vor, dass ich, siehe oben, einen Callback mittels Delegate bei der Basisklasse registriere. Die Basisklasse ruft dann die Methode über den Delegaten über einen Thread auf.

Jetzt habe ich schon viel rumprobiert aber es scheint so zu sein, dass ich immer explizit in der Targetmethode die Abfrage machen muss, was natürlich nervig ist, wenn man mehrere solcher Callbackmethoden hat und immer wieder die Abfrage reinschreiben (reinkopieren) muss.

Thema: [erledigt] InvokeRequired in Basisklasse für Control kapseln
Am im Forum: GUI: Windows-Forms

Hallo,

gibt es eine Möglichkeit die Abfrage (und das Handling) für InvokeRequired in Basisklasse zu kapseln?

Aktuell wird eine Callback-Methode über die Basisklasse registriert:

base.WaitWebBrowserBackground(new WebBrowserWaitBackgroundCallback(LoginNavigateHomepage_CallbackDone), 5000);

Und in der Basisklasse wird dann von einem Thread aus die Callbackmethode aufgerufen, welche wie folgt aussieht:

  private void LoginNavigateHomepage_CallbackDone() {
      if(base.webBrowser.InvokeRequired) {
        this.Invoke(new WebBrowserWaitBackgroundCallback(LoginNavigateHomepage_CallbackDone));
      }
      else {
        base.LogInfo("THIS WORKS!" + base.webBrowser.InvokeRequired);
        HtmlElement loginButton = base.webBrowser.Document.GetElementById("submit-alt");
        loginButton.InvokeMember("click");
      }
    }

Jetzt habe ich schon einiges ausprobiert, aber ich bekomme es einfach nicht hin, das "Low-Level-Gedöns" der Abfrage auf InvokeRequired in der Basisklasse zu kapseln.

Hat jemand Idee oder geht das einfach net?

Für etwaige Antworten schon einmal vielen Dank im Voraus.