GUI 更新时 C Sharp GUI/Socket 崩溃

发布于 2024-12-10 19:35:14 字数 695 浏览 0 评论 0原文

每当handleResponse调用委托函数“func”时,我的GUI都会毫无例外地崩溃。委托函数将文本附加到 GUI 上的 RichTextBox。

如果我在“connect”中调用 this.func ,它就可以正常工作。

private void handleResponse(IAsyncResult result)
{
    try
    {
        this.func.Invoke("test");
    }
    catch (Exception e)
    {
        throw e;
    }
}

public void connect(string ip, int port, delegateFunction func) {     
    try
    {
        connection.Connect(ip, port);
        socket = connection.Client;
        this.func = func;            
        socket.BeginReceive(incomingBuffer, 0, incomingBuffer.Length, SocketFlags.None, handleResponse, null);
    }
    catch (Exception e)
    {
        throw e;
    }
}           

Whenever handleResponse calls the delegate function "func" my GUI crashes with no exception. The delegate function appends text to a RichTextBox on the GUI.

If I call this.func in "connect" it works just fine.

private void handleResponse(IAsyncResult result)
{
    try
    {
        this.func.Invoke("test");
    }
    catch (Exception e)
    {
        throw e;
    }
}

public void connect(string ip, int port, delegateFunction func) {     
    try
    {
        connection.Connect(ip, port);
        socket = connection.Client;
        this.func = func;            
        socket.BeginReceive(incomingBuffer, 0, incomingBuffer.Length, SocketFlags.None, handleResponse, null);
    }
    catch (Exception e)
    {
        throw e;
    }
}           

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

命硬 2024-12-17 19:35:14

可能是线程问题。您的 GUI 可能必须在特定的 GUI 线程上更新。如何切换到该线程取决于您使用的 GUI 框架。

Could be a threading issue. Your GUI probably has to be updated on a specific GUI thread. How switching to that thread is achieved is specific to the GUI framework you use.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文