Waar het mij omgaat is dat je met STAThread waar een normale applicatie met start niet samen werkt met WaitHandle.WaitAll(doneEvents); Wat ik zou kunnen oplossen door 'm Multi threaded apartment te maken (MTAThread), maar dat terzijde.
Daarom dacht ik, ik los het op de manier volgende manier op:
Het lijkt te werken, maar is het wel veilig?¿
Daarom dacht ik, ik los het op de manier volgende manier op:
C#:
1
2
| foreach (ManualResetEvent mre in doneEvents) mre.WaitOne(); |
Het lijkt te werken, maar is het wel veilig?¿
C#:
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
26
27
| class A { void doThis(){ ManualResetEvent[] doneEvents = new ManualResetEvent[ht.Count]; foreach(MyObject b in ht.Values){ doneEvents[i] = new ManualResetEvent(false); b.eventDone = doneEvents[i]; ThreadPool.QueueUserWorkItem(b.ThreadPoolCallBack,i++); } foreach (ManualResetEvent mre in doneEvents) mre.WaitOne(); } } class MyObject { public void ThreadPoolCallBack(object threadNumber) { Console.WriteLine("Thread:{0} ->{1} is gestart.",threadNumber, this.Naam); this.DoeDit(true); eventDone.Set(); } void DoeDit(bool maghet){} } |
[ Voor 4% gewijzigd door Spiral op 28-08-2007 12:40 ]
To say of what is that it is not, or of what is not that it is, is false, while to say of what is that it is, and of what is not that it is not, is true. | Aristoteles