gpt4 book ai didi

C# 应用程序不关闭

转载 作者:可可西里 更新时间:2023-11-01 14:51:50 26 4
gpt4 key购买 nike

我在使用基于各种表单和各种线程的应用程序时遇到了问题。线程在应用程序结束前关闭,但即使这样我也无法 100% 准确地终止我的应用程序。

有时进程仍然继续工作,但没有任何显示(Form 甚至 Thread)。我认为问题出在 program.cs 上,几乎可以肯定,所以我将代码粘贴在这里

 private static Process old;
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
XmlConfigurator.Configure();
if (PriorProcess() != null)
{
try
{
old.Kill();
}
catch (Exception ex)
{
MessageBox.Show("Ja existe uma instancia do SpotLight em execucao.", "Aviso");
return;
}
}

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Support());

}



public static Process PriorProcess()
{
Process curr = Process.GetCurrentProcess();
Process[] procs = Process.GetProcessesByName(curr.ProcessName);
foreach (Process p in procs)
{
if ((p.Id != curr.Id) && (p.MainModule.FileName == curr.MainModule.FileName))
{
old = p;
return p;
}
}
return null;
}

New Support() 这是我在应用程序中出现的第一个表单。

这是线程的代码:

private void check_calls()
{
while (stop==false)
{
string actualTime = DateTime.Now.ToString("T");
connection = new MySqlConnection(ConnectionString);
MySql.Data.MySqlClient.MySqlCommand msqlCommand = new MySql.Data.MySqlClient.MySqlCommand();
msqlCommand.Connection = connection;
msqlCommand.CommandText = "Select cd.uniqueid,sup.timespan from contactCenterDevel.cc_cdr_support_pending sup, vboxZon.cdr cd WHERE sup.phone=cd.src AND cd.finish=0 AND cd.accountcode='serviin' AND cd.duration >0 AND cd.lastapp='Vxml' ORDER BY cd.calldate DESC LIMIT 1";

try
{
connection.Open();
MySql.Data.MySqlClient.MySqlDataReader msqlReader = msqlCommand.ExecuteReader();
while (msqlReader.Read())
{
int timespanCompare = convertTimetoSecs(msqlReader.GetString(1));
int actualtimeCompare = convertTimetoSecs(actualTime);

if (timespanCompare < actualtimeCompare)
{
updateFlagCDR(msqlReader.GetString(0));
}
}
}
catch (Exception er)
{ MessageBox.Show("Mysql actions error: " + er); }
finally
{ connection.Close(); }

Thread.Sleep(10000);
}
}

当我的注销功能上的“stop”标志更改为 true 时,这个停止。我已经尝试评论“thread.sleep”,但问题仍然存在。

最佳答案

通常,发生这种情况是因为您有一些从未终止的线程。为避免这种情况,如果您希望您的应用程序结束非 UI 线程的任何状态,您应该创建它们并将 IsBackground 标志设置为 true。

关于C# 应用程序不关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11523999/

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