从另一个类在另一个线程上更新控件

时间:2019-11-25 02:34:37

标签: c# class sockets controls

所以我试图使用表单上的方法更新表单上的控件

public partial class frmClient : Form
    {
       // Socket socket;
        string IP;
        string PORT;
        SocketManager socketManager;

        public frmClient()
        {
            InitializeComponent();
        }
        private void btnConnect_Click(object sender, EventArgs e)
        {
            IP = txtIP.Text;
            PORT = txtPort.Text;
            socketManager = new SocketManager(IP, PORT);
            // SocketManager();
        }

        public void OpenApp()
        {
            GUI _GUI = new GUI();
            _GUI.ShowDialog();
        }

        public void UpdateConnect(string status) {

            if (status == "Connected") {
                Console.WriteLine("Hello Socket Manager");
                btnConnect.Enabled = false;
                this.Hide();
            }
        }
    } 

这是我创建Form类的方式,我只是使用SocketIoClientDotNet连接到另一个将成为我的套接字管理器的类文件,我还有一个小的节点服务器设置来接受连接。

这是我的SocketManager类:

class SocketManager {

        frmClient Client = new frmClient();

        public SocketManager(string IP, string PORT) {
            try {
                Socket socket = IO.Socket("http://" + IP + ":" + PORT);

                socket.On(Socket.EVENT_CONNECT, () =>{
                    Client.UpdateConnect("Connected");
                });
            } catch {
                MessageBox.Show("Invalid Server");
            }
        }
    }

对我来说这只是一个小练习项目,问题是当我运行此代码时,我与服务器连接,便建立了连接,当代码通过“ UpdateConnect”方法运行时,我的确输入了WriteLine控制台,但是无论我如何尝试,我的按钮都不会更新。

我尝试使用Invoke,但是它说不需要Invoke,如果有人可以帮助我理解为什么我的按钮没有被禁用,我将不胜感激,谢谢!

0 个答案:

没有答案