-
Notifications
You must be signed in to change notification settings - Fork 0
/
ActionHandlerClass.cs
68 lines (57 loc) · 2.2 KB
/
ActionHandlerClass.cs
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace Delegates_n_Tasks
{
class ActionHandlerClass
{
public struct TaskParams
{
public int DelayTime;
public int TaskId;
public TaskParams(int delayTime, int taskId) //struct construtor, blir snyggt med new där den används.
{
DelayTime = delayTime;
TaskId = taskId;
}
}
//Detta är en delegat som agerar som interface.
public delegate double ResultHandlerDelegate(double value1, double value2); //Tänk klass ish
public ResultHandlerDelegate MathDelegate; //tänk objekt ish
public ActionHandlerClass()
{
MathDelegate = new ResultHandlerDelegate(AddNumbers);
}
public double AddNumbers(double value1, double value2)
{
return value1 + value2;
}
//detta är en CALLBACK delegat
public delegate void WheretoCall(string status); // Step 1
public WheretoCall wheretocall = null; // Step 2
public void Search() //Vi låssas att detta är egen task som söker efter en fil på HD.
{
wheretocall("Filen du letade efter ligger här"); // Step 3
}
public void run()
{
TaskParams taskParams = new TaskParams(2000, 666);
Task taskD = new Task(FireDelegate, taskParams); // I like this one!!!, to bad i cant pass the taskD.Id
taskD.Start();
taskD.Wait();
}
public async void FireDelegate(object? _taskParams)
{
TaskParams taskParams = (TaskParams)_taskParams; //Vid prod kod skall det såklart in try/catch på flera ställen.
while (true)
{
await Task.Delay(taskParams.DelayTime);
//Debug.WriteLine($"FireEvent {taskParams.TaskId}");
EventArgs emptyEventArgs = new EventArgs();
string MyString = "HEJ ";
Search(); // Varje gång denna anropas, låtsas vi att vi har hittat en fil vi letat efter.
}
}
}
}