2015-06-28 4 views
0

я получаю это исключение из-за изменения, когда я пытаюсь изменить пользовательский интерфейс для моего приложения WPF«System.Reflection.TargetParameterCountException» в приложении WPF

private delegate void MyFunctionDelegate2(double t1, double t2, double t3); 

public void translate(double tx, double ty, double tz) 
{ 
    Transform3DGroup transform = new Transform3DGroup(); 
    TranslateTransform3D t = new TranslateTransform3D(tx, ty, tz); 
    transform.Children.Add(t); 
    if (!Application.Current.Dispatcher.CheckAccess()) 
    { 
     var objj = new MyFunctionDelegate2(translate); 
     Application.Current.Dispatcher.BeginInvoke(objj); 
    } 
} 

ответ

0

Вы не прошли три аргумента в вашей MyFunctionDelegate2 в вызов BeginInvoke. Он должен выглядеть следующим образом:

private delegate void MyFunctionDelegate2(double t1, double t2, double t3); 

public void translate(double tx, double ty, double tz) 
{ 
    if (!Application.Current.Dispatcher.CheckAccess()) 
    { 
     var t = new MyFunctionDelegate2(translate); 
     Application.Current.Dispatcher.BeginInvoke(t, tx, ty, tz); 
    } 
    else 
    { 
     var transform = new Transform3DGroup(); 
     var t = new TranslateTransform3D(tx, ty, tz); 
     transform.Children.Add(t); 
    } 
} 

Или проще, без объявления делегата:

public void translate(double tx, double ty, double tz) 
{ 
    if (!Application.Current.Dispatcher.CheckAccess()) 
    { 
     Application.Current.Dispatcher.BeginInvoke(
      new Action(() => translate(tx, ty, tz))); 
    } 
    else 
    { 
     Transform3DGroup transform = new Transform3DGroup(); 
     TranslateTransform3D t = new TranslateTransform3D(tx, ty, tz); 
     transform.Children.Add(t); 
    } 
} 
+0

да решена! Большое спасибо (Y) –

Смежные вопросы