Mvvm light RelayCommand
은 async
메서드로 인해 두통을 유발합니다. WPF 버튼은 다음 relayCommand로 묶여 : 방법 AddDeviceClickExecute
이 완료되면 항상 다음과 같은 예외가 발생 때때로 유지하기 때문에RelayCommand 및 async 메서드 결과 : " 'System.Reflection.TargetInvocationException'mscorlib.dll에서 발생했습니다.
private RelayCommand _importDeviceCommand;
/// <summary>
/// Import device button for SelectDeviceView.
/// </summary>
public RelayCommand ImportDeviceCommand
{
get
{
return _importDeviceCommand
?? (_importDeviceCommand = new RelayCommand(async() => await AddDeviceClickExecute(),
() => _selectedCableType != null
&& _selectedAddDevice != null
&& _selectedPointNames != null
&& _selectedPointNames.Any()));
}
}
는 아마 어떤 형태를 오용하고있다.
형 'System.Reflection.TargetInvocationException'처리되지 않은 예외
- 가능한 솔루션은 무엇인가가 mscorlib.dll 발생?
- 람다 메서드 호출과 관련이 있습니까?
- 따라서 어떻게 람다가 사용되는 방식으로 relayCommand를 리팩토링 할 수 있습니까?
EDIT 1
호출 된 비동기 방식의 시도/캐치 불행하게도 어떤 차이를 만드는되지 않는 이유는 무엇입니까?
private async Task AddDeviceClickExecute()
{
_linkTheSocket = true;
var deviceImporter = new DeviceImporterAsync2(_projectContext, _deviceContext);
var progress = new Progress<string>(status =>
{
_importDeviceProgress = status;
RaisePropertyChanged("ImportDeviceProgress");
});
try
{
await deviceImporter.InvokeSimpleDeviceImport(UserSelectedSockets, progress);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Exception during simple device import", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
EDIT 2
다음 예외 바로 AddDeviceClickExecute
종료 후에 발생한다.
편집 내가 비동기를 활용하고 relayCommand 된 방법은 나의 제외 할 아무것도 없었다 밝혀졌다
3. 문제가 해결되었습니다.
'InnerException'을 검사하지 않고'TargetInvocationException'에 대해 언급하는 것은 의미가 거의 없습니다. –
'InnerException'이 비어 있거나 그것을 보는 방법을 모르겠습니다. 예외 설정에서 나는 Visual Studio 2015를 사용하고있다. (Common Language Runtime Exections)를 사용했다. – ajr
예외가 발생하자마자 Visual Studio를 디버거로 분해함으로써 실제 오류가 발생하는 경우가있다. 예외 창에서이를 수행 할 수 있습니다. "공용 언어 런타임"을 선택하고 오류가 발생하도록하십시오. 그 일이 끝나면 그 행동을 꺼야합니다. 그 행동은 매우 성가 시게 될 수 있습니다. https://blogs.msdn.microsoft.com/visualstudioalm/2015/02/23/the-new-exception-settings-window-in-visual-studio-2015/ –