vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevAniGif - als kostenlose Vollversion auf unserer vb@rchiv CD Vol.5  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Re: Threadsteuerung in Netframework 2.0 
Autor: ModeratorDaveS (Moderator)
Datum: 08.06.06 11:38

Du kannst ein AutoResetEvent benutzen. Hier ist etwas C# Code, der die notwendige Logik schildert
 
 
		// System Thread Distribution Processing
		private Queue __distQueue = new Queue();
		private AutoResetEvent __distEvent = new AutoResetEvent(false); 
		internal CWorkItem GetDistItem()
		{
			CWorkItem nextWi = null;
			do
			{
				lock(__distQueue.SyncRoot)
				{
					if (__distQueue.Count>0)
						nextWi = (CWorkItem)__distQueue.Dequeue();
				}
				if (nextWi==null)
				{
					if (CTrace.TraceOn) CTrace.Trace1("DistThread waiting for work", _
  "Distrib");
					__distEvent.WaitOne();
					if (CTrace.TraceOn) CTrace.Trace1("DistThread received work", "Distrib");
				}
			}
			while(nextWi==null&&!_app.CloseDown);
			if (_app.CloseDown)
			{
				if (CTrace.TraceOn) CTrace.Trace1("DistThread woken for system closedown", _
  "Distrib");
			}
			else
				if (CTrace.TraceOn) CTrace.Trace1("DistThread item obtained from queue", _
  "Distrib");
			return nextWi;
 
		} // GetDistItem()
 
		private void postDistItem(CWorkItem wi)
		{
			lock(__distQueue.SyncRoot)
			{
				if (CTrace.TraceOn) CTrace.Trace1("Posting work item for DistThread", _
  "Distrib");
				__distQueue.Enqueue(wi);
				if (__distQueue.Count>NWStats.MaxQueuedDistItems)
					NWStats.SetMaxQueuedDistItems(__distQueue.Count);
				if (__distQueue.Count==1)
				{
					if (CTrace.TraceOn) CTrace.Trace1("Waking up DistThread", "Distrib");
					// Post (maybe) waiting distribution thread
					__distEvent.Set();
				}
			}
		}  // postDistItem()
Alle Tasks benutzen postDistItem() um ein CWorktItem in diese Queue (__distQueue) zu setzen, und ein Task benutzt GetDistItem() um __distQueue auszulesen.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Threadsteuerung in Netframework 2.01.027IIIIIChrisIIIII08.06.06 11:02
Re: Threadsteuerung in Netframework 2.0834ModeratorDaveS08.06.06 11:38
Re: Threadsteuerung in Netframework 2.0654ModeratorDaveS08.06.06 13:05
Re: Threadsteuerung in Netframework 2.0556IIIIIChrisIIIII08.06.06 13:10

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel