Ik zit met een situatie waar ik niet meteen een oplossing voor vindt.
Om mijn code compact en overzichtelijk te houden heb ik een class aangemaakt die zichzelf aanmaakt en in een array van threads plaatst. Deze threads openen files en daarom is het vrij belangrijk dat deze zichzelf veilig afsluiten. Een Abort() of een Interrupt() is dus niet echt een optie aangezien deze de bestanden open laat staan.
Het grote probleem is dat je niet kan communiceren met de FooClass childs anders kon je daar gewoon een functie insteken. De Thread class is ook sealed dus ik kan niet zomaar functies overschrijven of uitbreiden.
Iemand een idee hoe ik dit veilig kan afhandelen, zonder er 2 classes van te maken?
Om mijn code compact en overzichtelijk te houden heb ik een class aangemaakt die zichzelf aanmaakt en in een array van threads plaatst. Deze threads openen files en daarom is het vrij belangrijk dat deze zichzelf veilig afsluiten. Een Abort() of een Interrupt() is dus niet echt een optie aangezien deze de bestanden open laat staan.
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
| class FooClass { private Thread[] _listOfThreads; private int numberOfThreads = 5; public void Start() { for (int i = 0; i < numberOfThreads; i++) { if ((_listOfThreads[i] == null) || (!_listOfThreads[i].IsAlive)) { Thread newThread; FooClass fooClass = new FooClass(); newThread = new Thread(new ThreadStart(fooClass.Run)); newThread.Start(); _listOfThreads[i] = newThread; } } } private void Run() { //Open file... } } |
Het grote probleem is dat je niet kan communiceren met de FooClass childs anders kon je daar gewoon een functie insteken. De Thread class is ook sealed dus ik kan niet zomaar functies overschrijven of uitbreiden.
Iemand een idee hoe ik dit veilig kan afhandelen, zonder er 2 classes van te maken?
♥ Under Construction ♦ © 1985 - 2013 and counting. ♣ Born to be Root ★ In the end, we are all communists ♠ Please, don't feed me meat