private delegate void FlushClient();
private void button1_Click(object sender, EventArgs e)
{
Thread thread = new Thread(getGPS);
thread.IsBackground = true;
thread.Start();
}
private void getGPS()
{
System.Reflection.Assembly asm = System.Reflection.Assembly.LoadFrom(System.AppDomain.CurrentDomain.BaseDirectory + " //Service.dll");
Type tp = asm.GetType("Service");
object obj = System.Activator.CreateInstance(tp);
System.Reflection.MethodInfo GetVechileInfo = tp.GetMethod("GetVechileInfo");
System.Xml.XmlNode _tmpNode = (System.Xml.XmlNode)GetVechileInfo.Invoke(obj, new object[] { "8888", "8888", "8" });
//Service GPSws = new Service();
//System.Xml.XmlNode _tmpNode = GPSws.GetVechileInfo("888", "888", "888");
string a = _tmpNode.OuterXml;
DataSet ds = new DataSet();
ds.ReadXml(new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(a)));
if (this.label1.InvokeRequired)//等待异步
{
FlushClient fc = new FlushClient(getGPS);
this.Invoke(fc);//通过代理调用刷新方法
}
else
{
label1.Text = ds.Tables["Table"].Rows[0]["Vehicle"].ToString() + ds.Tables["Table"].Rows[0]["GPSTime"].ToString() + ds.Tables["Table"].Rows[0]["Speed"].ToString();
}
方法二
private SynchronizationContext CurSynContext = null; (全局变量)
private void Form1_Load(object sender, EventArgs e)
{
// ReadIni();
CurSynContext = SynchronizationContext.Current;
}
private void myEventForCallback(object state)
{
label1.Text = "1234234" ;
}
private void ThreadStar()
{
CurSynContext.Post(new SendOrPostCallback(myEventForCallback), null);
}