gpt4 book ai didi

c# - .Net Core - 调试时应用程序崩溃

转载 作者:行者123 更新时间:2023-11-30 17:31:03 26 4
gpt4 key购买 nike

有些奇怪的事情正在发生。如果我在某行代码后放置一个断点,调试时,调试 session 会停止,就好像我按下了“停止”按钮一样。
真正奇怪的是,如果我完全跳过该函数,跳过它,代码不会崩溃...

我正在使用 .Net Core 2, 在完全更新的 VS For Mac 中运行 在任何 VS(Windows 和 Mac)上,使用 C# 7.1

代码如下:

        var connectionToUse = new SqlConnection(string.Format(str, dbName));
try
{
SqlCommand command = new SqlCommand();
command.Connection = connectionToUse;
command.CommandText = @"SELECT * from myTable";
await connectionToUse.OpenAsync(); //CANT GET PAST THIS LINE HERE
var r1 = await command.ExecuteReaderAsync();
while (await r1.ReadAsync())
{
//MORE CODE
}
r1.Close();
await Task.Delay(15000);
}
catch (Exception ex)
{
//NEVER ENTERS HERE
}
finally
{
if (connectionToUse.State != ConnectionState.Closed)
{
connectionToUse.Close();
}
}

编辑1:
使用 .Open(),没有异步,工作完美。但是问题转移到 r1.ReadAsync() 行...

编辑2:
在该代码之前,下面的代码运行完美

    private async Task<Dictionary<int, string>> MapDatabases()
{
Dictionary<int, string> databases = new Dictionary<int, string>();

SqlConnection mainConn = new SqlConnection(string.Format(str, "Master"));
SqlCommand command = new SqlCommand();
command.CommandText = "SELECT name,database_id FROM sys.databases WHERE database_id = 5";
command.Connection = mainConn;
try
{
await mainConn.OpenAsync();
SqlDataReader reader = await command.ExecuteReaderAsync();
while (await reader.ReadAsync())
{
databases.Add(reader.GetInt32(1), reader.GetString(0));
}
reader.Close();
mainConn.Close();
}
finally
{
if (mainConn.State != ConnectionState.Closed)
{
mainConn.Close();
}
}
return databases;
}

编辑 3:
也可在完全更新的 VS 2017 上重现。

编辑4:
显然 await 语句有问题。我发现代码会在随后的第一个await中崩溃,无论它在哪里

最佳答案

我有点想通了...我正在使用 Task.StartNew 跨越新线程。更改为 Task.Run 后一切开始正常工作。虽然无法弄清楚调试 session 崩溃的原因...由于代码按预期工作,我接受这个作为答案。

关于c# - .Net Core - 调试时应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48644401/

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