c#结集

本文介绍了一个使用C#进行网络编程的例子,包括如何处理数据接收、获取应用程序版本号,以及两种实现线程与界面同步通讯的方法,并提供了字符串与字节数组之间的转换示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//1.Application.DoEvents()

public int ReceiveBuffer()

         {

             int newSize;

             strLastError = "没有错误";

             try

             {

                 while (true)

                 {

                     Application.DoEvents();

                     if (SocketClient.Poll((int)5, SelectMode.SelectRead) == false)

                     {

                         Thread.Sleep(100);

                         continue;

                     }

                     newSize = SocketClient.Receive(Buffer, 0, 1024, SocketFlags.None);

                     if (newSize == 0)

                     {

                         strLastError = "网络通讯关闭错误";

                         return (-1);

                     }

                    return (newSize);

                 }

             }

             catch (Exception e)

             {

                 strLastError = "异常网络接收错误,系统信息:" + e.Message;

                 return (-1);

             }

         }

//2.获得程序自身版本号

using System.Reflection;

Assembly.GetExecutingAssembly().GetName().Version.ToString();

//3.线程与界面窗体同步通讯

方法一用Invoke:

        delegate void SetLogCallBack(string msg);


        private void SetLog(string msg)
        {
            try
            {
                if (Textlog.InvokeRequired)
                {
                    SetLogCallBack aSetLog = new SetLogCallBack(SetLog);
                    this.Invoke(aSetLog, new object[] { msg});
                }
                else
                {
                    Textlog.AppendText(msg + "/r/n");
                    Textlog.SelectionStart = Textlog.Text.Length;
                    Textlog.ScrollToCaret();
                }
            }
            catch
            {
            }
        }

方法二event+BeginInvoke:

public delegate void TransactNotifyEventHandler(object sender, TransNotifyEventArgs e);

public class TransManager
{

        Thread t;

        #region Event
        public event TransactNotifyEventHandler TransNotify;

        protected virtual void OnTransNotify(TransNotifyEventArgs e)
        {
            if (TransNotify != null)
            {
                TransNotify(this, e);
            }
        }
        #endregion

        public bool Start()
        {
            t = new Thread(new ThreadStart(this.TransThreadPorc));
            t.Start();
            return true;
        }

        private void TransThreadPorc()
        {

                OnTransNotify(new TransNotifyEventArgs("hello world"));

        }

}

 

 

///窗口界面部分

        TransManager transMgr = new TransManager();
        private void FrmMain_Load(object sender, EventArgs e)
        {
          transMgr.TransNotify += new TransactNotifyEventHandler(TransactNotify);
            try
            {
                transMgr.Start();
            }
            catch
            {
            }
        }
        public void TransactNotify(object sender, TransNotifyEventArgs e)
        {
            if (this.InvokeRequired)
            {
                object[] param = new object[2] { sender, e };
                this.BeginInvoke(new TransactNotifyEventHandler(OnTransactNotify), param);
            }
            else
            {
                OnTransactNotify(sender, e);
            }
        }
        private void OnTransactNotify(object sender, TransNotifyEventArgs e)
        {

                    Textlog.AppendText(e.msg + "/r/n");
                    Textlog.SelectionStart = Textlog.Text.Length;
                    Textlog.ScrollToCaret();
        }

//4. string与byte[]转换

System.Text.Encoding.Default.GetString()

System.Text.Encoding.Default.GetBytes()

//int byte 转换

int i;

byte[] b=BitConverter.GetBytes( 0xba5eba11);

i= BitConverter.ToInt32(b, 0);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值