作者virdust2003 (XDXDXDXDXDXD)
看板C_Sharp
标题Re: [问题] Text方法会丢出未知的例外?
时间Wed May 20 08:07:31 2009
考古文
就是把code 交给原本的UI的Thread去执行就可以了
private void ChangeText() {
if ( this.InvokeRequired ) {
this.Invoke(new MethodInvoker(this.ChangeText));
} else {
//这里是你下面的Code
}
}
※ 引述《testUI (测试者)》之铭言:
: //Latitude纬度转换
: Double dLat = Convert.ToDouble(lineArr[2]);
: dLat = dLat / 100;
: string[] lat = dLat.ToString().Split('.');
: Latitude = lineArr[3].ToString() + lat[0].ToString() + "." + ((Convert.ToDouble(lat[1]) / 60)).ToString("#####");
: //Longitude经度转换
: Double dLon = Convert.ToDouble(lineArr[4]);
: dLon = dLon / 100;
: string[] lon = dLon.ToString().Split('.');
: Longitude = lineArr[5].ToString() + lon[0].ToString() + "." + ((Convert.ToDouble(lon[1]) / 60)).ToString("#####");
: //Display显示出来
: txtLat.Text = Latitude;//这两行会丢出例外
: txtLong.Text = Longitude;//
: private void txtLat_TextChanged_1(object sender, EventArgs e)
: {
: }
: private void txtLong_TextChanged_1(object sender, EventArgs e)
: {
: }
: 以上是我的程式码片段,
: 大概就是作把GPS讯号抓出来算出经纬度,
: 再把他们显示在两个TEXTBOX上这样
: 但每次我跑的时候,他都会跟我说TEXT这个方法抛出例外,是未定义的例外
: 我看书上也没有要特别宣告这个方法 用同样的方式使用居然会跳出错误 蛮怪的
: 我是在WM6手机模拟器上跑的 开发环境是M$ studio 2008
: windows mobile SDK 6 .NET Framework 3.5
: 以下是他显示出来的详细例外讯息
: System.NotSupportedException 未处理
: Message="Control.Invoke must be used to interact with controls created on a separate thread."
: StackTrace:
: at Microsoft.AGL.Common.MISC.HandleAr(PAL_ERROR ar)
: at System.Windows.Forms.Control.get_Text()
: at System.Windows.Forms.Control.set_Text(String value)
: at SmartDeviceProject4.Form1.SetText(String text)
: at SmartDeviceProject4.Form1.serialPort1_DataReceived(Object sender, SerialDataReceivedEventArgs e)
: at System.IO.Ports.SerialPort.CatchReceivedEvents(Object src, SerialDataReceivedEventArgs e)
: at System.IO.Ports.SerialStream.EventLoopRunner.CallReceiveEvents(Object state)
: at System.Threading.ThreadPool.WorkItem.doWork(Object o)
: at System.Threading.Timer.ring() ((Convert.ToDou
: 先谢谢各位回答了@@
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.96.158.65
1F:→ testUI:我照你说的做,他跟我说MethodInvoker未宣告@@ 05/20 16:52
2F:推 wvsrugby:将 MethodInvoker 改成 Action 05/20 20:37
3F:→ testUI:这样就可以了,但是Text有比较直接的使用方法吗?不然每次要 05/20 21:04
4F:→ testUI:用都要这样感觉很麻烦@@ 05/20 21:05