c#结集
//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);
更多推荐
c#结集
发布评论