为什么不显示此MessageBox



我有下面这样的EventHandler代码。

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;
}
}

在单独的线程中执行代码是标准的BeginInvoke吗?

您必须仅在GUI线程中使用GUI方法。若要切换到GUI线程,请尝试Control.IsInvokeRequired和Control.Invoke方法。

相关内容

  • 没有找到相关文章

最新更新