首先抱歉我的英语不好,
我尝试使用线程生成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;
我得到一个跨线程异常(当前线程无法访问,因为其他线程是拥有者)。
我认为我没有正确使用代理和调用......