苏飞论坛

标题: 帮忙解释下这段代码 [打印本页]

作者: 玫瑰花的葬礼    时间: 2013-4-26 15:41
标题: 帮忙解释下这段代码
[code=csharp]private struct SendMessageStates
        {
            public SendMessageDelegate d;
            public IAsyncResult result;
        }

        /// <summary>异步向服务器端发送数据</summary>
        private void AsyncSendMessage(string message)
        {
            SendMessageDelegate d = new SendMessageDelegate(SendMessage);
            IAsyncResult result = d.BeginInvoke(message, null, null);
            while (result.IsCompleted == false)
            {
                if (isExit)
                {
                    return;
                }
                Thread.Sleep(50);
            }
//下面这段没看懂,帮忙解释下
            SendMessageStates states = new SendMessageStates();
            states.d = d;
            states.result = result;
            Thread t = new Thread(FinishAsyncSendMessage);
            t.IsBackground = true;
            t.Start(states);
        }[/code]

作者: 站长苏飞    时间: 2013-4-26 15:58
[code=csharp]SendMessageStates states = new SendMessageStates();
            states.d = d;
            states.result = result;[/code]
这是New一个结构SendMessageStates 对象名为states 下面是赋值
//开启一个线程技术方法FinishAsyncSendMessage
[code=csharp]Thread t = new Thread(FinishAsyncSendMessage);
            t.IsBackground = true;//设置为后台线程,在后台运行的那种
            t.Start(states);//给这个FinishAsyncSendMessage方法传个参数是states[/code]
其实这里主要解决的是多线程调用有参数的方法的问题,
其它可以更简单就是我常写的那种
如下
[code=csharp]Thread objThread = new Thread(new ThreadStart(delegate
                    {
                      //在这里写你的方法,可以随便 写多个方法和参数。这是最方便 的
                    }));
                    objThread.Start();[/code]

作者: 玫瑰花的葬礼    时间: 2013-4-26 19:07
受教了,学习中……




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4