Формы приложений Windows — ошибка System.AccessViolationExceptionC#

Место общения программистов C#
Ответить
Anonymous
 Формы приложений Windows — ошибка System.AccessViolationException

Сообщение Anonymous »

Я столкнулся с проблемой System.AccessViolationException во время выполнения пакета SSIS с использованием C#.
У меня есть родительская форма Windows, в которой я спрашиваю пользователя, хочет ли он продолжить, и если да, то родительская форма скрывается, отображается другая форма и выполняется приведенный ниже код.
Пакет выполнен успешно, но при попытке удалить различные объекты произошла ошибка.
/>Код:
namespace Run_Audit_Files_Project
{
public partial class frmStatus : Form
{
private Package pkg;
private Microsoft.SqlServer.Dts.Runtime.Application app;
public frmWelcome ParentForm { get; set; }

public frmStatus()
{
InitializeComponent();

System.Threading.Tasks.Task.Run(() =>
{
Microsoft.SqlServer.Dts.Runtime.Application localApp = null;
Microsoft.SqlServer.Dts.Runtime.Package localPkg = null;

try
{
localApp = new Microsoft.SqlServer.Dts.Runtime.Application();
localPkg = localApp.LoadPackage(@"C:\Users\XXXX\source\repos\XXXX\Audit Files Project\Package.dtsx", null);

DTSExecResult result = localPkg.Execute();

if (result == DTSExecResult.Success)
{
Update_Status("successful", "SSIS package executed successfully.");
}
else
{
System.Text.StringBuilder errorMessages = new System.Text.StringBuilder();

foreach (DtsError dtsError in this.pkg.Errors)
{
errorMessages.AppendLine($"• {dtsError.Description}");
}
Update_Status("error", errorMessages.ToString());
//MessageBox.Show($"Failed:\n{errorMessages}");
}
}
catch (Exception ex)
{
//Console.WriteLine(ex.Message);
if (ex.InnerException != null)
Update_Status("error", ex.InnerException.Message);
//MessageBox.Show(ex.InnerException.Message);
}
finally
{
localApp = null;
localPkg = null;

GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
}
});

}
private void Update_Status(string state = "", string erromessage = "")
{
if (this.InvokeRequired)
{
// Ensures thread safety if called from a background thread
this.Invoke(new Action(() => Update_Status(state, erromessage)));
}
else
{
lblProcess.Visible = false;
lblSuccessful.Visible = false;
lblError.Visible = false;
lblComments.Visible = false;
lblCurrentStatus.Visible = false;

pbError.Visible = false;
pbSuccess.Visible = false;
pbWarning.Visible = false;

btnClose.Enabled = false;

lbResult.Visible = false;

// Set visibility based on state or message
switch (state.ToLower())
{
case "successful":
lblSuccessful.Visible = true;
lblComments.Visible = false;
lblCurrentStatus.Visible = false;

pbSuccess.Visible = true;
btnClose.Enabled = true;

lbResult.Visible = true;
lbResult.ScrollAlwaysVisible = true;
lbResult.HorizontalScrollbar = true;
lbResult.Items.Add(erromessage);

break;
case "error":
lblError.Visible = true;
lblComments.Visible = false;
lblCurrentStatus.Visible = false;

pbError.Visible = true;
btnClose.Enabled = true;

lbResult.Visible = true;
lbResult.ScrollAlwaysVisible = true;
lbResult.HorizontalScrollbar = true;
lbResult.Items.Add(erromessage);

break;
default:
// Optional: show nothing special
break;
}
}
}
private void frmStatus_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = true;
}
private void btnClose_Click(object sender, EventArgs e)
{

if (ParentForm != null)
ParentForm.Close();

// Then close Form2 itself
this.Close();

}
}
}

Ошибка:
XEventAutoEngineLoad_002E_007Bdtor_007D((XEventAutoEngineLoad*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref g_XEventAutoLoader));
System.AccessViolationException
HResult=0x80004003
Message=Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
Source=
StackTrace:



Подробнее здесь: https://stackoverflow.com/questions/798 ... tion-error
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»