Autor |
Beitrag |
Glowhollow
![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 77
|
Verfasst: Do 11.04.19 13:03
Mahlzeit ![:)](images/smiles/icon_smile.gif) !
ich hab hier eine Fehlermeldung mit der ich wenig anfangen kann. Sie lautet:
Zitat: | "System.InvalidCastException: "Schnittstelle nicht registriert
Die Proxyregistrierung für die IID {EAC04BC0-3791-11D2-BB95-0060977B464C} wurde nicht gefunden." |
ich rufe mit folgendem Code eine GroupBox auf, die im Designer komplett hinterlegt ist.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| private void pbbtpisaddhtcshow_Click(object sender, EventArgs e) { this.gpbpishotelfilter.Visible = false; this.pbbtpisnhotelfilter.Image = GDISClient.Properties.Resources.filter_show_30; this.tbpishtccodes.Focus(); if (this.tbpishtccodes.Text.Length > 0) { string test = this.tbpishtccodes.Text.Replace(' ', '\0'); string[] htcsplit = test.Split(',');
foreach (string item in htcsplit) { this.lbpishtcall.SelectedIndex = (this.lbpishtcall.FindString(item)); if (this.lbpishtcall.FindString(item) >= 0) { this.lbpishtcadded.Items.Add(this.lbpishtcall.SelectedItem); this.lbpishtcall.Items.Remove(this.lbpishtcall.SelectedItem); } } this.lbpishtcall.ClearSelected(); this.lbpishtcadded.ClearSelected(); } this.tbpishtcsuche.Focus(); this.gbpishtcadd.Visible = true; } |
das Objekt gppishtcadd ist vorhanden. ist aber erst mal von der Visiblity auf false gesetzt. Ich habe auch etwas gegooglet, aber nichts dazu gefunden, höchstens n paar sachen mit COM objekten, mit denen ich hier aber nicht arbeite.
Ich habe den Debugger an diese Stelle gesetzt, dort ist der wert auf false gesetzt. Warum ich den nicht auf true setzen kann. Keine Ahnung.
[Edit]
Zitat: | Die Proxyregistrierung für die IID {EAC04BC0-3791-11D2-BB95-0060977B464C} wurde nicht gefunden.
bei System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
bei System.Windows.Forms.StringSource..ctor(String[] strings)
bei System.Windows.Forms.TextBox.SetAutoComplete(Boolean reset)
bei System.Windows.Forms.TextBox.OnHandleCreated(EventArgs e)
bei Syncfusion.Windows.Forms.Tools.TextBoxExt.OnHandleCreated(EventArgs e)
bei System.Windows.Forms.Control.WmCreate(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.TextBoxBase.WndProc(Message& m)
bei System.Windows.Forms.TextBox.WndProc(Message& m)
bei Syncfusion.Windows.Forms.Tools.TextBoxExt.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.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)</ExceptionString><DataItems><Data><Key>RestrictedDescription</Key><Value>Die Proxyregistrierung für die IID {EAC04BC0-3791-11D2-BB95-0060977B464C} wurde nicht gefunden.</Value></Data><Data></Data><Data></Data><Data><Key>__RestrictedErrorObject</Key><Value>System.Exception+__RestrictedErrorObject</Value></Data><Data><Key>__HasRestrictedLanguageErrorObject</Key><Value>False</Value></Data></DataItems></Exception></TraceRecord>
Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in System.Windows.Forms.dll aufgetreten.
Schnittstelle nicht registriert |
Moderiert von Th69: Code- durch C#-Tags ersetzt
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 11.04.19 13:25
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Glowhollow ![Threadstarter Threadstarter](./graphics/viewtopic/threadstarter.png)
![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 77
|
Verfasst: Do 11.04.19 13:49
Ja das ist korrekt, ich habe einen backgroundworker der das erledigt. Kann es sein, das es hier zu probleme kommt ?
|
|
Th69
![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
![Moderator Moderator](graphics/ranks/mod.png)
Beiträge: 4764
Erhaltene Danke: 1052
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Do 11.04.19 14:00
Die Guid ist für das interne COM Interface IAutoComplete2 (s. Reference Source winforms\Managed\System\WinForms\UnsafeNativeMethods.cs).
Läuft der Code nicht im UI-Thread (s.a. Kommentar in Interface not registered Failed to find proxy registration for IID: {EAC04BC0-3791-11D2-BB95-0060977B464C})?
UI-Code darf nur im UI-/Main-Thread laufen. Der BackgroundWorker bietet dazu die beiden Ereignisse ProgressChanged und RunWorkerCompleted an, welche im UI-Thread ausgeführt werden - ansonsten mußt du selber per Control.Invoke(...) dafür sorgen.
|
|
Glowhollow ![Threadstarter Threadstarter](./graphics/viewtopic/threadstarter.png)
![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 77
|
Verfasst: Fr 12.04.19 12:43
So konnte den Fehler lokalisieren.
Im Designer, gibt es eine variable die gesetzt wird. Diese sollte später für die Autovervollständigung genutzt werden.
Quelltext 1:
| this.tbpishtcsuche.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; |
kann es sein, das customsource erst mal initialisiert werden muß, und das daher der fehler rührt ?
|
|
Ralf Jansen
![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 4701
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 12.04.19 13:05
Nein. Der Stelle wo die Exception bei dir laut Stack auftritt ist es egal ob du bereits Vorgaben fürs Autocomplete gemacht hast oder nicht.
Laut Stack knallt es im Konstruktor von StringSource. Wenn man dort nachschaut sieht man das es bei der Initialisierung des SHAutoComplete COM Subsystems knallt(Der Aufruf von CoCreateInstance). Das ist unabhängig von deinem konkreten Code zur Initialisierung der TextBox. Sondern läßt eher eine kaputte (zumindest an der Stelle) Windowsinstallation vermuten.
2. Optionen das zu prüfen. Erstelle ein neues Winforms Projekt in dem du schnell mal eine Standard TextBox mit AutoComplete ausprobierst (also nicht das Syncfusion Zeug das du scheinbar verwendest) oder versuche dein Programm auf einem anderen System.
|
|
Glowhollow ![Threadstarter Threadstarter](./graphics/viewtopic/threadstarter.png)
![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 77
|
Verfasst: Fr 12.04.19 14:52
ok, konnte es noch weiter eingrenzen...
ich habe da eine Funktion:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| private void GetHTCFilter(string filter) { AutoCompleteStringCollection data = new AutoCompleteStringCollection(); this.lbpishtcall.Items.Clear(); this.lbpishtcadded.Items.Clear(); this.tbpishtcsuche.AutoCompleteCustomSource.Clear();
foreach (DataRow dr in mysqlcon.GetHTC(filter).Rows) this.lbpishtcall.Items.Add(dr["htc"]); foreach (var item in this.lbpishtcall.Items) { data.Add(item.ToString()); } this.tbpishtcsuche.AutoCompleteCustomSource = data; } |
@Ralf - Windows Installation konnte ich ausschließen. Hab das auf mehreren Rechnern getestet, knallt überall. Was ich gut finden würde, wäre, wenn du mir das mal mit dem Stack und dem analysieren erklären könntest. Für mich sind das kryptische Meldungen mit denen ich nur sehr wenig anfangen kann.
Kann es sein, das es ein Buffer Overflow, etc... stattfinden kann ? die data, sind etwa 5125 strings, die da drin gespeichert sind.
Ich vermute ja mal, das das das befüllen der textbox, mit den daten, zu verzögerungen führt, und da der nächst Befehl ist, gleich die Groupbox auf visible zu stellen, das die Textbox bis dahin noch nicht befüllt ist. Das ist aber jetzt eher geraten.
Irgendwo her muß ja der fehler kommen.
Nachtrag: Ich hab die Daten auf einen Datensatz reduziert. Also daran liegts auch nicht.
Moderiert von Th69: Code- durch C#-Tags ersetzt
|
|
Ralf Jansen
![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 4701
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 12.04.19 15:11
Zitat: | @Ralf - Windows Installation konnte ich ausschließen. |
Dann würde ich dir empfehlen AutoComplete mit einer Textbox nochmal in einem simpelst Beispiel auszuprobieren. Entsprechend den Codebeispielen aus der Dokumentation zum Beispiel. Wenn das funktioniert wissen wir das es an der Art wie du die TextBox verwendest liegt.
Dann solltest du nochmal erklären ob du irgendwas spezielles machst. Z.B. hatte TH69 schon mal gefragt ob dein Code zum Befüllen der AutoComplete-TextBox in einem eigenen Thread (und nicht im UI-Thread) läuft.
|
|
Glowhollow ![Threadstarter Threadstarter](./graphics/viewtopic/threadstarter.png)
![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 77
|
Verfasst: Fr 12.04.19 15:55
Ok, ist nicht leicht das ganze auseinanderzuklabüstern, aber....
Ich habe tatsächlich einen Backgroundworder, der tabellen, und unter anderem Filter setzt.
ich post das hier kurz.
in der Main Form
C#-Quelltext 1: 2: 3:
| BGWAppStart = new System.ComponentModel.BackgroundWorker() { WorkerReportsProgress = true, WorkerSupportsCancellation = true }; BGWAppStart.DoWork += BGWAppStart_DoWork; BGWAppStart.RunWorkerCompleted += BGWAppStart_RunWorkerCompleted; |
BGWAppStart wird nach der initialisierung der Form aufgerufen. über RunWorkerAsync();
DoWork definiert folgendes:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private void BGWAppStart_DoWork(object sender, DoWorkEventArgs e) { if (this.BGWAppStart.CancellationPending) { e.Cancel = true; return; } BGWAppStart.ReportProgress(0, "Working..."); GetFilter(); } |
GetFilter macht folgendes:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| public void GetFilter() { filterdest = mysqlcon.GetDestinations(); filterzap = mysqlcon.GetAirports(""); filterverpfl = mysqlcon.GetVerpfl(); filtersterne = mysqlcon.GetSterne(); filterzimmer = mysqlcon.GetUnits(); filteraap = mysqlcon.GetDepaAirports(""); GetHTCFilter(""); } |
und GetHTCFilter macht folgendes:
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| private void GetHTCFilter(string filter) { this.tbpishtcsuche.AutoCompleteCustomSource = new AutoCompleteStringCollection(); this.lbpishtcall.Items.Clear(); this.lbpishtcadded.Items.Clear(); this.tbpishtcsuche.AutoCompleteCustomSource.Clear();
foreach (DataRow dr in mysqlcon.GetHTC(filter).Rows) this.lbpishtcall.Items.Add(dr["htc"]); foreach (var item in this.lbpishtcall.Items) this.tbpishtcsuche.AutoCompleteCustomSource.Add(item.ToString()); } |
und tbpishcsuche ist wiefolgt definiert (im designer):
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8:
| this.tbpishtcsuche.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend; this.tbpishtcsuche.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource; this.tbpishtcsuche.BeforeTouchSize = new System.Drawing.Size(100, 20); this.tbpishtcsuche.Location = new System.Drawing.Point(12, 37); this.tbpishtcsuche.Metrocolor = System.Drawing.Color.FromArgb(((int)(((byte)(209)))), ((int)(((byte)(211)))), ((int)(((byte)(212))))); this.tbpishtcsuche.Name = "tbpishtcsuche"; this.tbpishtcsuche.Size = new System.Drawing.Size(550, 20); this.tbpishtcsuche.TabIndex = 1020; |
Also nichts schwarzmagisches, oder sonst irgendwas.
das autocomplete textfeld ist einer groupbox.
C#-Quelltext 1: 2: 3: 4: 5:
| this.gbpishtcadd.Controls.Add(this.btnpishtcaddabbort); this.gbpishtcadd.Controls.Add(this.btnpishtcaddokay); ... this.gbpishtcadd.Controls.Add(this.tbpishtcsuche); ... |
Es ist also nicht so, das ich ich AutoComplete irgenwie mit dem Backgroundworker zusammenstoßen könnte. Allerdings bin ich gerne bereit, leider kenn ich mich mit den Threads noch nicht so gut aus, den Backworker im UI thread laufen zu lassen. Wenn mir jemand zeit wie das gehen soll.
Danke für eure Hilfe
Moderiert von Th69: Code- durch C#-Tags ersetzt
|
|
Chiyoko
![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 298
Erhaltene Danke: 8
Win 98, Win Xp, Win 10
C# / C (VS 2019)
|
Verfasst: Fr 12.04.19 16:16
Wie Th69 schon vermutet hat, knallts bei einem Threadübergreifendem Vorgang.
Die Funktion GetFilter (bzw. die Aufrufe /Zuweisungen der Controls) muss in die Funktion, die ReportProgress (Event ProgressChanged) auslöst.
Moderiert von Th69: C#-Tags hinzugefügt
|
|
Glowhollow ![Threadstarter Threadstarter](./graphics/viewtopic/threadstarter.png)
![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 77
|
Verfasst: Fr 12.04.19 16:40
Ich steh gerade aufm Schlauch, ich sitzt da jetzt seit 2 tagen dran, mein kopf raucht, vor lauer Möglichkeiten.
Ich rufe ja in Backgroundworker_doWork ja auf, dort wird ein ReportProgress getriggert - right ?
C#-Quelltext 1: 2: 3: 4:
| private void BGWAppStart_ProgressChanged(object sender, ProgressChangedEventArgs e) { GetFilter(); } |
C#-Quelltext 1:
| BGWAppStart.ProgressChanged += new ProgressChangedEventHandler(BGWAppStart_ProgressChanged); |
wurde hinzugefügt. Ich hab zwar jetzt keinen Crash mehr, AutoComplete läuft immer noch nicht. Zudem wird mein Splashcreen verzögert aufgebaut.
Habe das Textfeld nochmal neu erstellt, um autocomplete zu testen, jedoch ohne funktion.
Das ProgressChanged, was macht das genau ?
EDIT: Sobald ich diese Zeile in der textbox drin habe im designer
C#-Quelltext 1:
| this.textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; |
crashts wieder....
Moderiert von Th69: Code- durch C#-Tags ersetzt
Moderiert von Th69: C#-Tags hinzugefügt
|
|
Ralf Jansen
![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Ralf Jansen hat insgesamt 92.0% On-Topic und 8.0% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 4701
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 12.04.19 17:24
Zitat: | Das ProgressChanged, was macht das genau ? |
Aus einem Thread, wie in der BackgroundWorker startet (DoWork läuft in einem anderen Thread), darf man nicht direkt auf die UI zugreifen. Da man möglicherweise aus dem was da im Hintergrund läuft Feedback an jemanden geben will, z.b. weil man den Fortschritt (den Progress) der Hintergrundaufgabe irgendwie anzeigen will, gibt es den ProgressChanged Event. Den muss man im DoWork Code explizit aufrufen was du übrigens getan hast. Mit einem Progress von 0, du sagst also soviel wie es ist noch nichts erledigt.
Damit ProgressChanged etwas sinnvoll anzeigen kann ist es in den Hauptthread synchronisiert. Heißt der läuft im Haupthread und man darf daher darin auf die UI, wie z.b. deine TextBox, zugreifen.
Dein Code innerhalb von DoWork ist soweit richtig (vermutlich), du willst ja das der Zugriff auf deine Datenbank im Hintergrund passiert und deine UI nicht hängt, nur du darfst das Ergebnis von dem was da im Hintergrund läuft nicht im Hintergrund an die Textbox zuweisen. Letztlich wird es darauf hinauslaufen das du die Aufgaben die du in GetFilter erledigst aufteilen musst.
Das sammeln der Daten kann in DoWork bleiben, das zuweisen deiner Daten an deine TextBox darf aber erst später im Hauptthread erfolgen. Dabei könnte die ein Aufruf von ReportProgress in DoWork helfen. Wenn du das am Ende von DoWork machst. Da wäre es im RunWorkerCompleted Event aber sinnvoller. Denn das passiert explizit am Ende. Dein Splashscreen hängt übrigens weil du ja den gesamten Code in ProgressChanged ausführst also auch die potentiell lang laufende Datenbankabfrage. Da das im Hauptthread lauft kann der währenddessen die UI nicht aktualisieren.
|
|
Glowhollow ![Threadstarter Threadstarter](./graphics/viewtopic/threadstarter.png)
![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 77
|
Verfasst: Di 16.04.19 13:37
Hey Ralf,
ich hab mir das jetzt genau angesehen. ich versuche zum Schluss eine Groupbox auf visible zu setzen, diese Groupbox besteht aus mehreren Elementen, die über den backgroundworker befüllt wird.
Die letztendliche Befüllung findet im BackgroundWorker_RunWorkerCompleted statt.erst danach sollte die Groupbox auf visible gesetzt werden. Dennoch habe ich hier die Fehlermeldung "Schnittstelle nicht registriert".
Wie debugge ich das jetzt am besten ? Würde mir das jemand mit den Stacktrace genauer erklären ?
Vielen Dank
Moderiert von Th69: C#-Tags hinzugefügt
|
|
Chiyoko
![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 298
Erhaltene Danke: 8
Win 98, Win Xp, Win 10
C# / C (VS 2019)
|
Verfasst: Di 16.04.19 14:04
Es gibt in Visual Studio einen Bereich der sich Aufrufhierarchie (Stacktrace) nennt. Das ist eine Abfolge von Adressen bzw. Funktionen, die als letztes aufgerufen wurden, wenn du etwas debuggst.
Der Stacktrace ist genau das selbe. Die Liste startet von dem Punkt, wo der Fehler auftrat und zeigt die letzten Zugriffe an.
Anhand der Adressen lässt sich der Fehler eingrenzen.
EDIT:
Zudem sieht es so aus, als wenn du durch die jetzige ProgressChanged Funktion eine unnötige Mehrfachzuweisung hast.
Deine TextBox darf auch nicht mehrzeilig sein (ich weiß nicht, welche Seiteneffekte das hätte).
Moderiert von Th69: Beiträge zusammengefügt.
Moderiert von Th69: C#-Tags hinzugefügt
|
|
Th69
![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Th69 hat insgesamt 97.7% On-Topic und 2.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
![Moderator Moderator](graphics/ranks/mod.png)
Beiträge: 4764
Erhaltene Danke: 1052
Win10
C#, C++ (VS 2017/19/22)
|
Verfasst: Di 16.04.19 14:09
Schau dann auch nach, in welchem Thread das ausgeführt wird (VS-Menu "Debug/Windows/Threads").
Ein gelber Pfeil in der Liste zeigt dir den aktuellen Thread an (sollte dann also der Main-Thread sein).
|
|
Glowhollow ![Threadstarter Threadstarter](./graphics/viewtopic/threadstarter.png)
![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Glowhollow hat insgesamt 92.2% On-Topic und 7.8% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 77
|
Verfasst: Di 16.04.19 14:32
ok, vielen dank, das mit den threads hilft mir schon mal weiter. Interessanterweise habe ich 6 threads offen, wobei eigentlich maximal 3 offen sein sollten.
Leider wird auch nicht angezeigt, welche thread das ist, gibts irgendwie ne möglichkeit, dem thread einen namen zu geben, damit ich in der threadliste, sehe, welcher thread, bzw. backgroundworker im moment aktiv ist ?
Das heißt doch letztendlich, das die backgroundworker, abgeschlossen sein müssen, das dieses schnittstellen problem behoben werden kann ? Right ?
[Edit:] Habe jetzt die Threads benannt. Kann auch einen Backgroundworker noch sehen (OnProgressChanged). Allerdings werden da noch andere Threads angezeigt, die wohl aber nix mit dem Backgroundworker an sich zu tun haben (sonst würde ich namen sehen).
[Edit2:]
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| Die Proxyregistrierung für die IID {EAC04BC0-3791-11D2-BB95-0060977B464C} wurde nicht gefunden. bei System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid) bei System.Windows.Forms.StringSource..ctor(String[] strings) bei System.Windows.Forms.TextBox.SetAutoComplete(Boolean reset) bei System.Windows.Forms.TextBox.OnHandleCreated(EventArgs e) bei System.Windows.Forms.Control.WmCreate(Message& m) bei System.Windows.Forms.Control.WndProc(Message& m) bei System.Windows.Forms.TextBoxBase.WndProc(Message& m) bei System.Windows.Forms.TextBox.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.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)</ExceptionString><DataItems><Data><Key>RestrictedDescription</Key><Value>Die Proxyregistrierung für die IID {EAC04BC0-3791-11D2-BB95-0060977B464C} wurde nicht gefunden.</Value></Data><Data></Data><Data></Data><Data><Key>__RestrictedErrorObject</Key><Value>System.Exception+__RestrictedErrorObject</Value></Data><Data><Key>__HasRestrictedLanguageErrorObject</Key><Value>False</Value></Data></DataItems></Exception></TraceRecord> Ein Ausnahmefehler des Typs "System.InvalidCastException" ist in System.Windows.Forms.dll aufgetreten. |
Das heißt. das bei System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(), der fehler gedropt wird. Wie komme ich jetzt an diesen Punkt ? ist ja nicht so, das man da f12 drücken kann und der navigiert da hin ![;)](images/smiles/icon_wink.gif) .
|
|
Chiyoko
![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png) ![Chiyoko hat insgesamt 99.7% On-Topic und 0.3% Off-Topic Beiträge geschrieben. ontopic star](./graphics/ranks/star_ontopic_full.png)
Beiträge: 298
Erhaltene Danke: 8
Win 98, Win Xp, Win 10
C# / C (VS 2019)
|
Verfasst: Di 16.04.19 16:40
Mit Resharper oder der entsprechenden PDB Datei. Aber das ist gar nicht notwendig.
Als erstes solltest du mal den Backroundworker (und alle anderen Threads bis auf den Mainthread) zu debugzwecken weglassen.
Dann wird getestet, ob du normale Einträge ohne Datenbank hinzufügen kannst.
Ist das gelungen, kannst du ein Dataset anhängen und eine Datenbank auslesen.
Debugging ist die Suche der Nadel im Heuhaufen. Um die Nadel zu finden, musst du den Heuhaufen eben aufteilen oder auseinander nehmen.
|
|
|