正在使用的对象System.InvalidOperationException'

时间:2016-05-19 11:37:33

标签: c#

我在调用另一个类的Form个对象时遇到问题。

Form课程中我有这个:

public void reloadMapOverlay(GMapOverlay overlay)
{
    try
    {
        Invoke(new Action(() => this.map_Box.Overlays.Add(overlay)));
    }
    catch (Exception e)
    {
        Console.WriteLine("reloadMapOverlay: {0}", e);
        this.setError("reloadMapOverlay: " + e);
    }
}

在另一个类(Map_custom.cs)中:

route.Points.Add(coords.get_position());
overlay.Routes.Add(route);
mainForm.reloadMapOverlay(overlay);

mainForm.reloadMapOverlay执行时,vb会给我和正在使用的对象一个异常

  

System.InvalidOperationException

在叠加对象中

我能做些什么?

1 个答案:

答案 0 :(得分:0)

我尝试在mainForm中添加调度程序, - >

public Dispatcher dispacher = Dispatcher.CurrentDispatcher;
public void reloadMapOverlay(GMapOverlay overlay)
            {
                try
                {
                    dispacher.Invoke(new Action(() => this.map_Box.Overlays.Add(overlay)));
                }
                catch (Exception e)
                {
                    Console.WriteLine("reloadMapOverlay: {0}", e);
                    this.setError("reloadMapOverlay: " + e);
                }
            } 

什么都没有。

我有 mainForm中的public void reloadMapOverlay(GMapOverlay overlay) { try { Invoke(new Action(() => this.map_Box.Overlays.Add(overlay))); } catch (Exception e) { Console.WriteLine("reloadMapOverlay: {0}", e); this.setError("reloadMapOverlay: " + e); } }, 然后,在另一个类(Map_Custom.cs)中我有一个函数

        public void addRoute()
    {
        if (!coords.isWrongCoords())
        {
            Console.WriteLine("Route");
            route.Points.Add(coords.get_position());
            overlay.Routes.Add(route);
            mainForm.reloadMapOverlay(overlay);
        }
    }

在mainFrom中我有一个函数(在一个线程内)我调用

                            Thread addRoute = new Thread(new ThreadStart(map.addRoute));
                        addRoute.IsBackground = true;
                        addRoute.Start();