Это что-то вроде продолжения предыдущего вопроса, который я задал, хотя теперь я могу предоставить гораздо больше кода, чтобы улучшить свой вопрос и дополнительно показать мою проблему с этой областью.
У меня естьтри процедуры здесь.Две из этих подпрограмм работают вместе - и в случае успеха загрузят сборку в память с помощью System.Reflection.Я хотел бы, чтобы эти процедуры возвращали ошибку, если файл не загружался должным образом в память, но по какой-то причине эти операторы try-catch просто не будут работать так, как мне хотелось бы.
Примечание:Чтобы эта процедура работала, файл должен быть сборкой .net.Например, если файл был запрограммирован в VB6, будет выдано сообщение об ошибке.Это ошибка, которую я пытаюсь вернуть мне.
private void ExecuteDataIntoMemory(string filePath)
{
byte[] bytes = File.ReadAllBytes(filePath);
try
{
ExecFile(bytes);
MessageBox.Show("successfully loaded this file into memory");
}
catch
{
MessageBox.Show("Could not load this file into memory");
}
}
private static void ExecFile(byte[] data)
{
try
{
//Work around for "SetCompatibleTextRenderingDefault"
System.Threading.Thread T = new System.Threading.Thread(ExecFile);
//Set STA to support drag/drop and dialogs?
T.SetApartmentState(System.Threading.ApartmentState.STA);
T.Start(data);
}
catch
{
MessageBox.Show("caught some error ...");
}
}
private static void ExecFile(object o)
{
System.Reflection.MethodInfo T = System.Reflection.Assembly.Load((byte[])o).EntryPoint;
if (T.GetParameters().Length == 1)
T.Invoke(null, new object[] { new string[] { } });
else
T.Invoke(null, null);
}
Я могу уточнить больше, если необходимо, но я не уверен, какую другую информацию включить в данный момент.