スレッドを使用する単純なWPFアプリケーションがあります。たとえば、新しいスレッドでDateTimeを取得し、それをメインスレッドのTextBoxに返したい。これを行うには、ControlDispatcher.Invokeメソッドを使用する必要があります。しかし、何かが間違っています。
namespace Bizantyjskie
{
public static class ControlExtensions
{
public static void InvokeIfRequired(this Control control, Action action)
{
if (System.Threading.Thread.CurrentThread != control.Dispatcher.Thread)
control.Dispatcher.Invoke(action);
else
action();
}
public static void InvokeIfRequired<T>(this Control control, Action<T> action, T parameter)
{
if (System.Threading.Thread.CurrentThread != control.Dispatcher.Thread)
control.Dispatcher.Invoke(action, parameter);
else
action(parameter);
}
}
class watki
{
public watki(MainWindow mw)
{
_mw = mw;
}
public MainWindow _mw;
public void dzialaj()
{
Thread watek1 = new Thread(new ThreadStart(w1));
watek1.Start();
}
private void w1()
{
string godz = DateTime.Now.TimeOfDay.ToString();
ControlExtensions.InvokeIfRequired((value) => _mw.tb_w1.Text = value, godz);
}
}
}
問題は
ControlExtensions.InvokeIfRequired((value)=> _mw.tb_w1.Text = value、godz);
エラーが発生しました。
デリゲート型ではないため、ラムダ式を型'System.Windows.Controls.Control'に変換できません