Κατ' αρχήν ευχαριστώ για τις απαντήσεις.
ΜαρκοΔυστυχώς στην ανάγκη να μπορώ να ακυρώσω την εκτέλεση της συνάρτησης, αποφάσισα να ξηλώσω την static υλοποίηση και να χρησιμοποιήσω instance οπότε
αυτό που μου πρότεινες, αν και για την προηγούμενη κατάσταση βόλευε, για την τρέχουσα δεν βολεύει αφού για κάθε διαφορετικό τύπο συνάρτησης πρέπει να δηλώσω
έναν νέο TimedExecutioner<Τ>.
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
28
29
30
31
32
33
34
35
36
37
38
| public delegate void FuctionCall(params object[] pars);
public class TimedExecutioner: Timer
{
private bool canExecute = true;
private FuctionCall FuncToCall;
private object[] FuncPars = null;
public TimedExecutioner()
{
}
protected override void OnTick(EventArgs e)
{
base.OnTick(e);
if(canExecute)
FuncToCall(FuncPars);
this.Stop();
this.FuncToCall = null;
this.FuncPars = null;
this.Interval = 1;
}
public void ExecFunctionInTime(int mSecs, FuctionCall func, params object[] FuncPars)
{
this.FuncToCall = func;
this.FuncPars = FuncPars;
this.Interval = mSecs;
this.Start();
}
public void CancelPendingExecution()
{
canExecute = false;
}
} |
Anjelinio
Χρησιμοποιώ v3.5 αλλά για να είμαι ειλικρινής δεν έχω ιδέα από delta expressions ούτε linq καθώς δεν παίζω με ΒΔ εδώ και καιρό (έχω αρχίσει ήδη όμως να το ψάχνω

). Από λίγο που διάβασα, κατάλαβα τί παίζει με το delta και πώς θα γίνει η κλήση αλλά δεν κατάλαβα στην class πώς θα διαμορφωθεί η κατάσταση και πώς μπορεί να επιστραφεί και η int τιμή στην περίπτωση που ανέφερες. Πάντως βασικά με ενδιαφέρει η κλήση void συναρτήσεων οπότε και να μην καλύπτω τον επιστρεφόμενο τύπο δεν πειράζει(όχι ότι δεν έχω περιέργια πώς γίνεται

)
Ευχαριστώ