代码打包后,程序卡死

忿奋逸龙 2017-12-03 04:24:11
我有个程序,用到窗体之间的委托,调用其他窗体的函数,调试时候没有问题,但是打包成exe文件之后,运行会卡死,不知道是什么原因,能帮我找下原因吗?

form1窗体的函数:


Form2 frm = new Form2();
private void button1_Click(object sender, EventArgs e)
{
// 创建Form2,并添加事件处理函数

frm.DataChange += new Form2.DataChangeHandler(DataChanged);
frm.ShowDialog();
}

public void DataChanged(object sender, DataChangeEventArgs args)
{
frm.Hide();

textBox3.AppendText(args.name + "\r\n");
textBox3.AppendText(args.pass + "\r\n");
System.Threading.Thread.Sleep(10000);

frm.Show();
}



from2窗体的函数:


public delegate void DataChangeHandler(object sender, DataChangeEventArgs args);
public event DataChangeHandler DataChange; // 声明事件
public void OnDataChange(object sender, DataChangeEventArgs args) // 调用事件函数
{
if (DataChange != null)
{
DataChange(this, args);
}
}

private void button1_Click(object sender, EventArgs e)
{
OnDataChange(this, new DataChangeEventArgs("1", "2"));
}

/// <summary>
/// 自定义事件参数类型,根据需要可设定多种参数便于传递
/// </summary>
public class DataChangeEventArgs : EventArgs
{
public string name { get; set; }
public string pass { get; set; }
public DataChangeEventArgs(string s1, string s2)
{
name = s1;
pass = s2;
}
}


这段代码是抄袭的,就是搞不懂为什么打包后,一执行就卡死,我是用的InstallShield2013LimitedEdition打包的。
...全文
318 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xian_wwq 2017-12-04
  • 打赏
  • 举报
回复
检查程序卡死的最直接的方法是在关键步骤打印程序日志, 通过日志信息判定卡在那一步, 逐步缩小,就可以定位问题。 System.Threading.Thread.Sleep(10000); 这种代码最好不要轻易用,主线程被阻塞这么长时间,表现就是卡死 异步操作要同步有很多手段, 比如autoresetevent, 不要通过时间等候来实现
exception92 2017-12-04
  • 打赏
  • 举报
回复
调试时候没有问题,但是打包成exe文件之后,运行会卡死
->调试的时候界面上的textBox更新了,打包之后界面没有及时更新。 这不是打包的问题,应该是你Sleep的问题,把sleep去掉或者每次触发事件之后你等10s。
所谓的“卡死”就是页面显示没有达到你的预期,因为你不清楚为什么要sleep以及sleep之后对UI控件的更新会有什么影响,所以说代码是抄袭的。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧