Beetje vreemde topic titel, maar zal het verduidelijken. Ik ben nieuw met C#, dus kan er compleet naast zitten.
Ik ben bezig met een applicatie die nogal wat bestands acties doet zoals kopiëren, hernoemen, enz. Soms zijn bestanden nog in gebruik en moet ik een bepaalde actie nogmaals proberen.
Hiervoor had ik deze methode geschreven:
Dit werkt goed, maar niet als ik het volgende ga doen:
Ik kan da newFile niet gebruiken omdat deze unassigned zou zijn.
Hoe gebruik ik in C# steeds hetzelfde try/catch + extra's blok zonder deze te hoeven copy & pasten?
Ik ben bezig met een applicatie die nogal wat bestands acties doet zoals kopiëren, hernoemen, enz. Soms zijn bestanden nog in gebruik en moet ik een bepaalde actie nogmaals proberen.
Hiervoor had ik deze methode geschreven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| delegate void RetryDelegate(); private void AutoRetry(int timeOutSecs, RetryDelegate p) { bool success = false; bool timeOut = false; DateTime start = DateTime.Now; while ((!success) && (!timeOut)) { try { p(); success = true; } catch (IOException) { success = false; Thread.Sleep(1000); } timeOut = (DateTime.Now.Subtract(start).TotalSeconds > timeOutSecs); } } |
Dit werkt goed, maar niet als ik het volgende ga doen:
code:
1
2
3
4
5
| FileInfo newFile; AutoRetry(60, delegate() { newFile = CreateNewFile("test"); }); |
Ik kan da newFile niet gebruiken omdat deze unassigned zou zijn.
Hoe gebruik ik in C# steeds hetzelfde try/catch + extra's blok zonder deze te hoeven copy & pasten?
"The shell stopped unexpectedly and Explorer.exe was restarted."