Я работаю над приложением wpf. Я хочу создать объект FlowDocument и распечатать его. Поскольку шаг создания занимает несколько секунд и замораживает пользовательский интерфейс, я перехожу мой код в новый поток. Проблема в том, что мне нужно установить изображение в FlowDocument и вам нужно создать Image UIElement, но элементы управления пользовательским интерфейсом не могут быть созданы в фоновом потоке! Я также пробовал так много сценариев Dispather.Invoke(), но они улавливают исключение из потока объектов.Вставка изображения в FlowDocument
Интересно, есть ли какие-либо другие способы вставки изображения в FlowDocument? Или можно создать Image UIElement в фоновом потоке?
любое предложение будет оценено.
P.S: Некоторый Пример код =>
BitmapImage bitmapImage = SingletonSetting.GetInstance().Logo;
Image v = new Image() { Source = bitmapImage };
currnetrow.Cells.Add(new TableCell(new BlockUIContainer(v)));
Image v = ((App)Application.Current).Dispatcher.Invoke(new Func<Image>(() =>
{
BitmapImage bitmapImage = SingletonSetting.GetInstance().Logo;
return new Image() { Source = bitmapImage};
}));
currnetrow.Cells.Add(new TableCell(new BlockUIContainer(v)));
спасибо за ваш ответ, но это может вызвать исключение в последней строке. Он говорит: «Вызывающий поток не может получить доступ к этому объекту, потому что ему принадлежит другой поток» – Evil
строка currnetrow.Cells ...? На какой поток был сделан токнетроу? –
да, фоновая нить создайте его! Я полагаю, что использование currentrow в потоке пользовательского интерфейса является проблемой! – Evil