类中的Dispatcher.invoke问题:C#

问题描述 投票:0回答:1

这是我的代码的一部分:

public void refreshShowCase()
{

    for (int i = 0; i < 12; ++i)
    {
        bitmapImage[i] = new BitmapImage(new Uri(posterURLCollection[i]));
        image[i] = new Image { Source = bitmapImage[i] }; //Error occurs here****
    }
}

当我运行这个时,我得到这个错误:调用线程必须是STA,因为许多UI组件都需要这个。

所以我在Disapther.Invoke中添加了我的代码

this.Dispatcher.Invoke((Action)delegate
{
   BitmapImage[] bitmapImage = new BitmapImage[14];
   Image[] image = new Image[14];

   //Do a loop for defining Bitmaps sources
   for (int i = 0; i < 12; ++i)
   {
         bitmapImage[i] = new BitmapImage(new Uri(posterURLCollection[i]));
         image[i] = new Image { Source = bitmapImage[i] };
   }
}

现在我有这个错误:'Dispatcher'在当前上下文中不存在!

我该怎么解决这个问题?请帮忙。

Update1:​​提到的代码在我创建的类的void内!

c# .net windows visual-studio
1个回答
1
投票

在您的问题中,您在自定义类中使用this.Dispatcher.Invoke((Action)delegatethis指的是该类内部的函数。您的自定义类没有Dispatcher

而是使用:App.Current.Dispatcher.Invoke((Action)delegate并确保包含此代码的自定义类属于您的App名称空间。

© www.soinside.com 2019 - 2024. All rights reserved.