我有一个WPF项目,正在使用GMap.Net。我的项目是显示城市中公交车位置。为了演示版本,我想要一个点列表,并且每5秒钟更改标记的位置。但存在两个问题。首先,我应该提到,在演示版本时,我没有互联网连接;其次,当我尝试休眠时,地图在所有Thread.Sleep()执行完之前不会显示任何内容。
PointLatLng[] points = new PointLatLng[]
{
new PointLatLng(34.633400, 50.867886),
new PointLatLng(34.632469, 50.866215),
new PointLatLng(34.631213, 50.864210),
new PointLatLng(34.629314, 50.861153),
new PointLatLng(34.626737, 50.857140)
};
int i = -1;
do
{
i++;
GMapMarker marker = new GMapMarker(points[i]);
marker.Shape = new Control.Marker(0, 0, 65, 90);
MainMap.Markers.Add(marker);
System.Threading.Thread.Sleep(5000);
MainMap.Markers.RemoveAt(0);
if (i == 3) break; ;
} while (true);
执行 Do-While 循环后,Map 将会显示。 我尝试:
Task.Factory();
并且
BackgroundWorker
但是我遇到了错误,因为我的代码包含UI控件。有什么解决办法吗?
Task
处理逻辑,使用SynchronizationContext
创建或更改 UI 对象。 - Lance