gpt4 book ai didi

c# - MySQLConnector/Net 的 FatalExecutionEngineError

转载 作者:行者123 更新时间:2023-11-29 00:32:04 36 4
gpt4 key购买 nike

我正在开发一个连接到 MySQL 数据库的 C#.NET 应用程序,并使用一些不安全的代码来使用旧的 C++ dll。

程序一启动,就会加载dll并分配一个指针,然后初始化一些C#变量,然后删除指针。

在程序中,我有一个对话框,其中有一个选项卡控件。这个“对话框”的构造函数从用旧 dll 初始化的变量和数据库中获取数据,这里开始出现问题:

        Dictionary<String, int> dizUM;
MySqlCommand myCom;
MySqlConnection myConn;
MySqlDataReader myRead;

cmbRigheCons.Items.Add( MosaicoS.Properties.Resources.STR_CONS_DESC_GEN );
cmbRigheCons.Items.Add( MosaicoS.Properties.Resources.STR_CONS_TIP_SOTT );
cmbRigheCons.Items.Add( MosaicoS.Properties.Resources.STR_CONS_SOTT );
cmbRigheCons.Items.Add( MosaicoS.Properties.Resources.STR_CONS_NOM_PEZ_CONS );
cmbRigheCons.SelectedIndex = MosaicoMain.CFG.DescCons;
cmbRigheVarMat.Items.Add( MosaicoS.Properties.Resources.STR_CONS_DESC_GEN );
cmbRigheVarMat.Items.Add( MosaicoS.Properties.Resources.STR_CONS_TIP_SOTT );
cmbRigheVarMat.Items.Add( MosaicoS.Properties.Resources.STR_CONS_SOTT );
cmbRigheVarMat.Items.Add( MosaicoS.Properties.Resources.STR_CONS_NOM_PEZ_CONS );
cmbRigheVarMat.Items.Add( MosaicoS.Properties.Resources.STR_CONS_NOM_PEZ_NEL_CONS );
cmbRigheVarMat.SelectedIndex = MosaicoMain.CFG.DescVarMat;
try
{
string connessione;

connessione = MosaicoMain.CFG.DBConnection.Replace( "Option=3;", "" );
connessione = connessione.Replace( "Driver={MySQL ODBC 5.1 Driver};", "" );
myConn = new MySqlConnection( connessione );
myCom = new MySqlCommand();
myConn.Open();
myCom.Connection = myConn;
myCom.CommandText = @"SELECT umi_id, umi_um FROM unimis WHERE umi_tipoum = 0 ORDER BY umi_um;";
myRead = myCom.ExecuteReader();
dizUM = new Dictionary<String, int>();
while( myRead.Read() )
dizUM.Add( myRead.GetString( 1 ), myRead.GetInt32( 0 ) );
cmbUMSup.DataSource = new BindingSource( dizUM, null );
cmbUMSup.DisplayMember = "Key";
cmbUMSup.ValueMember = "Value";
myRead.Close();
myConn.Close();
}
catch( MySqlException mySqlException )
{
MessageBox.Show( mySqlException.ToString() );
}

在这里,如果我从 myConn.Open() 发表评论;到 myConn.Close();我没有遇到任何问题,但是打开连接会导致程序立即崩溃当我在表之间切换时,但不是在程序的这一部分而是在:

    private void configurazioniToolStripMenuItem1_Click( object sender, EventArgs e )
{
try
{
frmConfig = new FrmConfigurazioni();
frmConfig.ShowDialog();
}
catch( Exception exception )
{
MessageBox.Show( exception.ToString() );
}
}

这是我加载上一个代码片段的地方。错误是:

Managed Debugging Assistant 'FatalExecutionEngineError' has detected a problem in 
'C:\DEVELOP\MosaicoS\MosaicoS\bin\Debug\MosaicoS.vshost.exe'.
Additional Information: The runtime has encountered a fatal error.
The address of the error was at 0x792380d9, on thread 0x824.
The error code is 0xc0000005.
This error may be a bug in the CLR or in the unsafe or non-verifiable portions of user code.
Common sources of this bug include user marshaling errors for COM-interop or PInvoke, which may corrupt the stack.

不是异常(exception)。如果我评论代码,我不会崩溃,而且,如果我尝试在另一个解决方案中使用相同的字符串连接到相同的数据库,我也没有问题。我该如何解决这个问题?

提前致谢。

最佳答案

'0xc0000005' 是访问冲突异常。很难从您提供的代码中找出问题所在。我建议找到那个旧的 c++ dll 的源代码并在一个解决方案中一起调试它们。您可以通过选中 .net 项目属性中“调试”部分下的“启用非托管代码调试”复选框来从 .net 调试 c++ dll。

关于c# - MySQLConnector/Net 的 FatalExecutionEngineError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16085060/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com