0
我有如下所示的EventHandler代碼。爲什麼這個MessageBox不出現?
void ConnectionManager_Error(object sender, EventArgs<string> e)
{
BeginInvoke((MethodInvoker)delegate()
{
State = ConnectState.NotFound;
MessageBox.Show(e.Value);
});
}
我的問題:
的MessageBox永遠不會出現,即使設備沒有連接到計算機。
我認爲MessageBox應該顯示錯誤消息。 有人可以告訴我什麼是錯的?
注:
我有這樣的代碼,我認爲會引發錯誤的ConnectionManager事件處理程序。
private void LogError(string error)
{
if (Error != null)
Error(this, new EventArgs<string>(error));
}
我也有這個代碼給出了一個錯誤消息包含LogError方法的字符串。
int lasterror = Marshal.GetLastWin32Error();
if (lasterror != 0)
LogError("Bluetooth API returned: " + lasterror.ToString());
或
if (BluetoothSetServiceState(IntPtr.Zero, ref device, ref HumanInterfaceDeviceServiceClass_UUID, BLUETOOTH_SERVICE_ENABLE) != 0)
LogError("Failed to connect to wiimote controller");
另一個提示
更具體地講,我也已經有了下面的代碼:
public event EventHandler<EventArgs<string>> Error;
和
ConnectionManager.Error += new EventHandler<EventArgs<string>>(ConnectionManager_Error);
而且也是這個類:
public class EventArgs<T> : EventArgs
{
public T Value
{
get;
set;
}
public EventArgs(T value)
: base()
{
Value = value;
}
}
你試過調試你的代碼嗎?在事件處理程序的第一行設置一個斷點 –
我試過了,它看起來沒有錯。 是否有可能發生,因爲我在用於創建此代碼的VS的不同VStudio版本中執行此項目? _silly question._ – user3332360
在單獨的線程中執行代碼是否是標準的BeginInvoke? – oleksa