0
레거시 시스템을 통합하고 DLL을 호출하여 API에 액세스해야합니다. 현재 API를 호출 할 수있는 다른 방법은 없습니다.WPF의 외부 DLL에서 임베디드 브라우저 404 오류 처리
그리고 DLL 쇼는 파일을 찾을 수없는 오류가 발생하는 스플래시 화면을 표시하려고합니다.
DotPeek이 API의 DLL을 디 컴파일 할 수 없으므로 추측이지만 샘플 솔루션에서이 동작을 복제 할 수있었습니다.
해결책.
오류 메시지.
응용 프로그램 코드입니다.
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var dll = Assembly.LoadFile(System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "WpfLibrary.dll"));
var type = dll.GetType("WpfLibrary.TestWindow");
var instance = Activator.CreateInstance(type);
object[] parameters = { };
instance.GetType().InvokeMember("Start2", BindingFlags.InvokeMethod, null, instance, parameters);
}
}
DLL 코드.
는public partial class TestWindow : Window
{
public TestWindow()
{
InitializeComponent();
}
public void Start2()
{
Show();
WebBrowser.Navigate(new Uri("file:///C:/aaaa.txt"));
}
}
간단한 해결책은 그러나 나는 더 나은 솔루션을 필요는 WPF 응용 프로그램이 설치되는 모든 컴퓨터에 파일을 만들 수 없습니다, 누락 된 파일을 만드는 것입니다.
내 질문에 어떻게 처리 할 수 / 외부 DLL에서 오는 이러한 오류 잡을 수 있습니까? 오류 메시지 상자가 표시되는 것을 막을 수 있다면 충분할 것입니다.
을 시도 할 수
/편집. 필자의 경우 WebBrowser 컨트롤은 예외를 throw하지 않습니다. – Ignas
흠, 좋아. 그리고 당신은 원하지 않거나 파일이 존재하는지 확인하고 추측 할 수있는 dll에 예외를 던질 수 있습니다. –
그러나 나는 그 DLL에 대한 통제권이 전혀 없다 ... 컴파일 된 바이너리를 받았다. – Ignas