0
考慮下面的類:如何找出對象是否可以Invoke()'d?
public class Event<T>
{
public delegate void Handler<t>(t msg);
private event Handler<T> E;
public void connect(Delegate handler) {
E += delegate(T msg) {
object target = handler.Target;
if (Invokable(target) {
target.BeginInvoke(handler, new object[] { msg });
}
};
}
public void emit(T msg) {
if (E != null) {
E(msg);
}
}
private static bool Invokable(object o) {
// magic
}
}
如何實現Invokable()
,以及還有什麼我需要這個代碼編譯?我唯一知道的其他問題是撥打target.BeginInvoke
,因爲目標是object
。
什麼是'Invokable'方法應該告訴對象'O'(它是一個靜態方法,所以它不能訪問還要別的嗎)? – 2010-06-18 12:24:38
你爲什麼重新創造代表? – Andrey 2010-06-18 12:25:06
@Tomas:無論是否是表單,因爲那時我需要線程安全魔法。 – 2010-06-18 12:27:55