Multithreading?

06/05/2014 11:33 |★|UnReaL#1
Hey Leute.
Ich möchte in VB.NET einen Bot für eine Chatroulette-ähnliche Seite schreiben, sprich er soll mehrere Nachrichten in verschiedenen Zeitabständen in mehreren Webbrowsern senden. Das habe ich erstmal mit normalen Subs probiert, doch hier failt es schon bei den Zeitabständen, denn bei System.Threading.Thread.Sleep, stoppt ja dann das komplette Programm. Also will ich das jetzt mit Threads machen, allerdings habe ich bei meinem ersten Versuch den Fehler gekriegt, dass ich von einem neuen Thread aus irgendwie nicht auf einen Webbrowser zugreifen kann, kann mir da jemand helfen?

LG.
06/05/2014 12:08 Terreox#2
Mehrere Threads halte ich hier für überflüssig.
Schau dir mal die Timer-Klasse an:
[Only registered and activated users can see links. Click Here To Register...]
06/05/2014 12:18 Mostey#3
Quote:
Originally Posted by |★|UnReaL View Post
allerdings habe ich bei meinem ersten Versuch den Fehler gekriegt, dass ich von einem neuen Thread aus irgendwie nicht auf einen Webbrowser zugreifen kann, kann mir da jemand helfen?
Weil der Webbrowser im UI Thread erstellt worden ist und somit nicht direkt verfügbar für andere Threads ist. Du kannst dir eine Funktion schreiben um die Aktionen unter dem UI Dispatcher ausführen zu lassen.

Siehe [Only registered and activated users can see links. Click Here To Register...] für Beispiele und Informationen
06/05/2014 13:17 tolio#4
Quote:
Originally Posted by Terreox View Post
Schau dir mal die Timer-Klasse an
Timer sind durchaus eine einfache art multithreading zu implementieren und ich bin auch der letzte der sagt man darf "nie" timer verwenden, aber hier sind threads vermutlich einfacher handzuhaben da man so eben verschiedene abläufe klar trennen kann

Quote:
Originally Posted by |★|UnReaL View Post
Also will ich das jetzt mit Threads machen, allerdings habe ich bei meinem ersten Versuch den Fehler gekriegt, dass ich von einem neuen Thread aus irgendwie nicht auf einen Webbrowser zugreifen kann, kann mir da jemand helfen?
ich würde das ganze vermutlich mit einem invoke machen:
[Only registered and activated users can see links. Click Here To Register...]
da dort beispiele dabei sind spare ich es mir jezt hier drauf weiter einzugehen
06/05/2014 16:18 Terreox#5
Ok ich hab überlesen, dass der TE unbedingt Threads haben will.
Von anderen Threads aus muss man natürlich mit dem Dispatcher arbeiten.

Quote:
Originally Posted by tolio
Timer sind durchaus eine einfache art multithreading zu implementieren und ich bin auch der letzte der sagt man darf "nie" timer verwenden, aber hier sind threads vermutlich einfacher handzuhaben da man so eben verschiedene abläufe klar trennen kann
Da würde ich mal gern einen Grund für haben.
Im Prinzip kommt beides aufs gleiche hinaus, zumindest was den Codeumfang betrifft.
Performance ist glaub ich bei dem Beispiel nicht wirklich relevant, außer man möchte hunderte oder tausende Browser gleichzeitig bedienen.
06/05/2014 16:47 Mostey#6
Quote:
Originally Posted by Terreox View Post
Ok ich hab überlesen, dass der TE unbedingt Threads haben will.
Von anderen Threads aus muss man natürlich mit dem Dispatcher arbeiten.
Das muss man auch wenn man Tasks, Timer oder BackgroundWorker nutzt, da diese auch asynchron laufen.
07/10/2014 15:57 Onkelmat#7
versuch das ganze mal mit Timern die backgroundorker starten, dann hast du threadsichere übergriffe und sogar completed events.