回答編集履歴
5
修正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
DynamicMethodを経由したら一応
|
1
|
+
DynamicMethodを経由したら一応イベントの登録には成功しましたが、使用方法的に問題ないかは全く調査・検証してないです。
|
2
2
|
|
3
3
|
|
4
4
|
|
4
修正
test
CHANGED
@@ -29,6 +29,8 @@
|
|
29
29
|
{
|
30
30
|
|
31
31
|
static dynamic _Timer = null;
|
32
|
+
|
33
|
+
static Delegate _ElapsedHandler;
|
32
34
|
|
33
35
|
|
34
36
|
|
@@ -68,11 +70,13 @@
|
|
68
70
|
|
69
71
|
var evElapsed = typeTimer.GetEvent("Elapsed");
|
70
72
|
|
73
|
+
_ElapsedHandler = dynamicElapsed.CreateDelegate(evElapsed.EventHandlerType);
|
74
|
+
|
71
75
|
evElapsed.AddEventHandler(
|
72
76
|
|
73
77
|
_Timer,
|
74
78
|
|
75
|
-
|
79
|
+
_ElapsedHandler);
|
76
80
|
|
77
81
|
_Timer.Start();
|
78
82
|
|
@@ -102,4 +106,6 @@
|
|
102
106
|
|
103
107
|
}
|
104
108
|
|
109
|
+
|
110
|
+
|
105
111
|
```
|
3
修正
test
CHANGED
@@ -44,10 +44,6 @@
|
|
44
44
|
|
45
45
|
|
46
46
|
|
47
|
-
var evElapsed = typeTimer.GetEvent("Elapsed");
|
48
|
-
|
49
|
-
|
50
|
-
|
51
47
|
var dynamicElapsed = new DynamicMethod(
|
52
48
|
|
53
49
|
"",
|
@@ -69,6 +65,8 @@
|
|
69
65
|
il.Emit(OpCodes.Ret);
|
70
66
|
|
71
67
|
|
68
|
+
|
69
|
+
var evElapsed = typeTimer.GetEvent("Elapsed");
|
72
70
|
|
73
71
|
evElapsed.AddEventHandler(
|
74
72
|
|
2
修正
test
CHANGED
@@ -46,10 +46,6 @@
|
|
46
46
|
|
47
47
|
var evElapsed = typeTimer.GetEvent("Elapsed");
|
48
48
|
|
49
|
-
var typeElapsedHandler = evElapsed.GetAddMethod()
|
50
|
-
|
51
|
-
.GetParameters()[0].ParameterType;
|
52
|
-
|
53
49
|
|
54
50
|
|
55
51
|
var dynamicElapsed = new DynamicMethod(
|
@@ -74,7 +70,11 @@
|
|
74
70
|
|
75
71
|
|
76
72
|
|
73
|
+
evElapsed.AddEventHandler(
|
74
|
+
|
75
|
+
_Timer,
|
76
|
+
|
77
|
-
|
77
|
+
dynamicElapsed.CreateDelegate(evElapsed.EventHandlerType));
|
78
78
|
|
79
79
|
_Timer.Start();
|
80
80
|
|
1
修正
test
CHANGED
@@ -48,9 +48,7 @@
|
|
48
48
|
|
49
49
|
var typeElapsedHandler = evElapsed.GetAddMethod()
|
50
50
|
|
51
|
-
|
51
|
+
.GetParameters()[0].ParameterType;
|
52
|
-
|
53
|
-
.ParameterType;
|
54
52
|
|
55
53
|
|
56
54
|
|
@@ -61,6 +59,8 @@
|
|
61
59
|
typeof(void),
|
62
60
|
|
63
61
|
new Type[] { typeof(object), typeof(object) });
|
62
|
+
|
63
|
+
|
64
64
|
|
65
65
|
var il = dynamicElapsed.GetILGenerator();
|
66
66
|
|