Всем доброго времени суток. Я здесь новенький, это моё первое сообщение, не судите строго, помощь очень нужна.
Дело состоит вот в чём, в своём WPF приложении в одном из обработчиков событий создаю обьект Timer, что из System.Threading, один из параметров которого делегат на вызываемый метод. Как написано в документации, этот метод запускается в отдельном потоке, сразу оговорюсь, это делается для описания модели полёта некоего снаряда. Мне нужно объединить эти потоки, для чего мне сказали использовать Dispatcher.BeginInvoke
И тут я столкнулся с проблемой, использую перегрузку Dispatcher.BeginInvoke(Delegate method, params object[] args),
в качестве первого параметра сперва подсказали использовать анонимный метод, не прошло, вылетает ошибка, что анонимный метод не является делегатом. Потом решил не мудрить и использовать просто делегат ссылающийся на некую функцию без возвращаемого значения(void), теперь при попытке указать делегату на эту функцию вылетает ошибка: "Неявное преобразование void в System.Delegate невозможно". Подскажите пожалуйста, в чём моя ошибка? С делегатами обращаться толком не умею, чтение документации не помогло прояснить картину, возможно ошибка именно в этом.
public partial class Window1 : Window
{
private delegate String _FlyModelMethodDelegate();
private bool _fly;
private void Page_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_fly = true
}
private void root_Loaded(object sender, RoutedEventArgs e)
{
TimerCallback TimerDelegate = ThreadSynch;
_timer = new Timer(TimerDelegate, null, 10, 100);
_FlyModelMethodDelegate = FlyBulletModelMethod(); // здесь возникает проблема, ругается на не возможность
} //неявного преобразования void в System.Delegate
private void ThreadSynch(object a)
{
if (_fly)
{
Dispatcher.BeginInvoke(_FlyModelMethodDelegate, null)
}
}
Гуглил, читал документацию, поиск юзал.
P.S. MSDN читаю, но пока воспринимаю плохо, надеюсь на вашу помощь.
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.