生成BitmapImage的跨线程异常

时间:2015-08-04 14:14:39

标签: c# wpf multithreading delegates invoke

首先抱歉我的英语不好,

我尝试使用线程生成BitmapImage。

在我的MainWindow课程中,我有以下代码:

 public Thread  bw ;
 public Hashtable cachetrace;
 public delegate void addbitmaptohash(Double a, BitmapImage b);

这是我将bitmapimage添加到hashtable的函数:

 public void addimg(Double a, BitmapImage b)
    {
        cachetrace.Add(a, b);
    }

启动我使用的线程:

 bw = new Thread(() => bw_DoWork());
 bw.Start();

我的bw_DoWork方法:

 public void bw_DoWork()
    {
        ...
        for (int j = 0; j < 25; j++)
        {

            if (!(cachetrace.ContainsKey(tbholtervalue)))
            {
                List<String> tpd = new List<String>();
                tpd = ...
                BitmapImage tmpimg;
                tmpimg = ...

                Dispatcher.Invoke((addbitmaptohash)addimg, tbholtervalue, tmpimg);
           ...

    }

Hashtable完成了BitmapImage(我可以在HDD上生成后看到它们)

但是当我尝试在主线程中访问包含BitmapImage的哈希表时:

 BitmapImage tmp2 = (BitmapImage)cachetrace[0];
 image_trace.Source = tmp2;

我得到一个跨线程异常(当前线程无法访问,因为其他线程是拥有者)。

我认为我没有正确使用代理和调用......

0 个答案:

没有答案