Подскажите пожалуйста, столкнулся с проблемой следующего характера на WPF:
Я асинхронно получаю по сетке какое-то количество данных, которое мне нужно вывести пользователю.
При получении, я отправляю полученные данные в таблицу (используя this.listView1.Dispatcher.BeginInvoke(new SetItemsSourceDelegate(this.SetDatatoListDispatcher), _tmp);).
Тут все прекрасно работает, данные появляются в таблице...
Далее я хочу вывести количество данных, какие есть, в таблицу. Результат записывается в TextBlock, соответственно мне WPF просто так ничего сделать не дает и я данные записываю перейдя в поток TextBlock'a
(используя this.textBlock1.Dispatcher.BeginInvoke(new SetQuantityDelegate(this.SetCount), new object[] { this.textBlock1, _failure });).
Но вот тут-то и возникает проблема! Вылезает ошибка при попытке перейти в поток TextBlock'a
(что странно, на одной машине все прекрасно работает, а на другой вылетает ошибка)
Может я что-то упустил?
Дайте совет, что делать, где копать или же если кто знает, поделитесь решением данной проблемы...
Да и еще вопросик, на моей машине, на висте, Dispatcher.BeginInvoke не просит поставить приоритеты в своей функции, а на некоторых машинах просит, с чем это связано?
(я имею ввиду следующее: startStopButton.Dispatcher.BeginInvoke(new NextPrimeDelegate(CheckNextNumber)); и startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new NextPrimeDelegate(CheckNextNumber));)
Здравствуйте, WhiteMonk, Вы писали:
WM>Но вот тут-то и возникает проблема! Вылезает ошибка при попытке перейти в поток TextBlock'a WM>(что странно, на одной машине все прекрасно работает, а на другой вылетает ошибка) WM>Может я что-то упустил? WM>Дайте совет, что делать, где копать или же если кто знает, поделитесь решением данной проблемы...
Хочется поглядеть на текст ошибки.
WM>Да и еще вопросик, на моей машине, на висте, Dispatcher.BeginInvoke не просит поставить приоритеты в своей функции, а на некоторых машинах просит, с чем это связано? WM>(я имею ввиду следующее: WM> startStopButton.Dispatcher.BeginInvoke(new NextPrimeDelegate(CheckNextNumber)); и WM> startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new NextPrimeDelegate(CheckNextNumber));)
Что значит "просит проставить приоритеты"? MessageBox что-ли показывает?
...возможно разные версии FW. Где-то с первым сервис паком, где-то без...
Здравствуйте, WhiteMonk, Вы писали: WM>Да и еще вопросик, на моей машине, на висте, Dispatcher.BeginInvoke не просит поставить приоритеты в своей функции, а на некоторых машинах просит, с чем это связано? WM>(я имею ввиду следующее: WM> startStopButton.Dispatcher.BeginInvoke(new NextPrimeDelegate(CheckNextNumber)); и WM> startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new NextPrimeDelegate(CheckNextNumber));)
WM>Заранее благодарю...
Версии фреймворка на машинах озвучьте. Подозреваю, что на одной 3.5 sp1, а вот на другой что-то явно меньшее...
Здравствуйте, MxKazan, Вы писали:
MK>Здравствуйте, WhiteMonk, Вы писали:
WM>>Но вот тут-то и возникает проблема! Вылезает ошибка при попытке перейти в поток TextBlock'a WM>>(что странно, на одной машине все прекрасно работает, а на другой вылетает ошибка) WM>>Может я что-то упустил? WM>>Дайте совет, что делать, где копать или же если кто знает, поделитесь решением данной проблемы... MK>Хочется поглядеть на текст ошибки.
Текст ошибки на память не помню боюсь ошибиться. Завтра на работе напишу, что за ошибка вылезает...
WM>>Да и еще вопросик, на моей машине, на висте, Dispatcher.BeginInvoke не просит поставить приоритеты в своей функции, а на некоторых машинах просит, с чем это связано? WM>>(я имею ввиду следующее: WM>> startStopButton.Dispatcher.BeginInvoke(new NextPrimeDelegate(CheckNextNumber)); и WM>> startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new NextPrimeDelegate(CheckNextNumber));) MK>Что значит "просит проставить приоритеты"? MessageBox что-ли показывает? MK>...возможно разные версии FW. Где-то с первым сервис паком, где-то без...
Может быть кстати, разные версии FW, за своей машиной-то я слежу (обновления, сервис паки), а вот про другие машины не знаю...
Что-то я не подумал об этом, хотя надо было бы подумать в первую очередь...
Здравствуйте, Codechanger, Вы писали:
C>Здравствуйте, WhiteMonk, Вы писали: WM>>Да и еще вопросик, на моей машине, на висте, Dispatcher.BeginInvoke не просит поставить приоритеты в своей функции, а на некоторых машинах просит, с чем это связано? WM>>(я имею ввиду следующее: WM>> startStopButton.Dispatcher.BeginInvoke(new NextPrimeDelegate(CheckNextNumber)); и WM>> startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new NextPrimeDelegate(CheckNextNumber));)
WM>>Заранее благодарю...
C>Версии фреймворка на машинах озвучьте. Подозреваю, что на одной 3.5 sp1, а вот на другой что-то явно меньшее...
Возможно вы правы, я не подумал об этом...завтра посмотрю... но на моей машине однозначно FW 3.5 sp1.
Здравствуйте, MxKazan, Вы писали:
MK>Здравствуйте, WhiteMonk, Вы писали:
WM>>Но вот тут-то и возникает проблема! Вылезает ошибка при попытке перейти в поток TextBlock'a WM>>(что странно, на одной машине все прекрасно работает, а на другой вылетает ошибка) WM>>Может я что-то упустил? WM>>Дайте совет, что делать, где копать или же если кто знает, поделитесь решением данной проблемы... MK>Хочется поглядеть на текст ошибки.
Текст ошибки: "Не соответствие числу параметров"
В общем и целом это мой косяк.
Суть в том, что я передаю в функцию object[], принимающую 2-а параметра TextBlock и count.
Но все же спасибо вам, что откликнулись на проблему.
Здравствуйте, Codechanger, Вы писали:
C>Здравствуйте, WhiteMonk, Вы писали: WM>>Да и еще вопросик, на моей машине, на висте, Dispatcher.BeginInvoke не просит поставить приоритеты в своей функции, а на некоторых машинах просит, с чем это связано? WM>>(я имею ввиду следующее: WM>> startStopButton.Dispatcher.BeginInvoke(new NextPrimeDelegate(CheckNextNumber)); и WM>> startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new NextPrimeDelegate(CheckNextNumber));)
WM>>Заранее благодарю...
C>Версии фреймворка на машинах озвучьте. Подозреваю, что на одной 3.5 sp1, а вот на другой что-то явно меньшее...
FW 3.5 sp1 не удалось поставить на машину начальника, черт его знает почему (2-а часа убил на попытку установить sp1)
А в общем и целом это мой косяк оказался.
Суть в том, что я передаю в функцию object[], принимающую 2-а параметра TextBlock и count. Тут-то он и падал...
Но все же спасибо вам, что откликнулись на проблему.
Здравствуйте, WhiteMonk, Вы писали:
WM>FW 3.5 sp1 не удалось поставить на машину начальника, черт его знает почему (2-а часа убил на попытку установить sp1)
Можно попробовать снести все FW и поставить с нуля только 3.5 SP1. Он за собой подтянет и 1-й и 2-й FW.
Здравствуйте, WhiteMonk, Вы писали:
WM>Доброго времени суток....
WM>Подскажите пожалуйста, столкнулся с проблемой следующего характера на WPF:
WM>Я асинхронно получаю по сетке какое-то количество данных, которое мне нужно вывести пользователю. WM>При получении, я отправляю полученные данные в таблицу (используя this.listView1.Dispatcher.BeginInvoke(new SetItemsSourceDelegate(this.SetDatatoListDispatcher), _tmp);). WM>Тут все прекрасно работает, данные появляются в таблице... WM>Далее я хочу вывести количество данных, какие есть, в таблицу. Результат записывается в TextBlock, соответственно мне WPF просто так ничего сделать не дает и я данные записываю перейдя в поток TextBlock'a WM>(используя this.textBlock1.Dispatcher.BeginInvoke(new SetQuantityDelegate(this.SetCount), new object[] { this.textBlock1, _failure });).
WM>Но вот тут-то и возникает проблема! Вылезает ошибка при попытке перейти в поток TextBlock'a WM>(что странно, на одной машине все прекрасно работает, а на другой вылетает ошибка) WM>Может я что-то упустил? WM>Дайте совет, что делать, где копать или же если кто знает, поделитесь решением данной проблемы...
Использовать CollectionView в качестве источника данных для ItemsSource, в TextBlock отображать количество элементов с помощью обыкновенного биндинга. Судя по вопросам, вы вообще не пользуетесь биндингами, а пишите код как в WinForms. В результате, тривиальная задача превращена в рулоны кода.
WM>Да и еще вопросик, на моей машине, на висте, Dispatcher.BeginInvoke не просит поставить приоритеты в своей функции, а на некоторых машинах просит, с чем это связано? WM>(я имею ввиду следующее: WM> startStopButton.Dispatcher.BeginInvoke(new NextPrimeDelegate(CheckNextNumber)); и WM> startStopButton.Dispatcher.BeginInvoke(DispatcherPriority.Normal, new NextPrimeDelegate(CheckNextNumber));)
Это связано с разными вариантами сигнатур метода BeginInvike, очевидно. BeginInvoke существует также в виде методов-расширений, доступных начиная с .NET 3.5 SP1.