1 2 这是第一个窗体的代码 3 4 private void button1_Click(object sender, EventArgs e) 5 { 6 while (true) 7 { 8 SqlConnection conn = new SqlConnection("Data Source=DMWIAJHLRQMX6QS;Initial Catalog=test;Persist Security Info=True;User ID=sa;Pwd=111111"); 9 conn.Open(); 10 string cmdStr = "insert into test_interfacetable0760 with(xlock) (SendPhone,text,SendTime,states,UserID) values ('13888888888','测试内容','2013-8-14',1,32) "; 11 SqlCommand cmd = new SqlCommand(); 12 cmd.Connection = conn; 13 cmd.CommandText = cmdStr; 14 try 15 { 16 cmd.ExecuteNonQuery(); 17 } 18 catch (Exception ex) 19 { 20 MessageBox.Show(ex.Message); 21 } 22 finally 23 { 24 conn.Close(); 25 } 26 } 27 } 28 29 30 这是第二个窗体的代码 31 32 private void button1_Click(object sender, EventArgs e) 33 { 34 while (true) 35 { 36 SqlConnection conn = new SqlConnection("Data Source=DMWIAJHLRQMX6QS;Initial Catalog=test;Persist Security Info=True;User ID=sa;Pwd=111111"); 37 conn.Open(); 38 SqlCommand cmd = new SqlCommand(); 39 cmd.Connection = conn; 40 string selecStr = "select top 1 * from test_interfacetable0760 with(xlock) where states=1 "; 41 cmd.CommandText = selecStr; 42 int tempid = Convert.ToInt32(cmd.ExecuteScalar()); 43 string cmdStr = "update test_interfacetable0760 with(xlock) set SendPhone='13777777777',text='更新的测试内容',SendTime='2000-8-14',states=2,UserID=22 where tempid=" + tempid + ""; 44 cmd.CommandText = cmdStr; 45 try 46 { 47 cmd.ExecuteNonQuery(); 48 } 49 catch (Exception ex) 50 { 51 MessageBox.Show(ex.Message); 52 } 53 finally 54 { 55 conn.Close(); 56 } 57 } 58 }
我 开着两个程序同时运行的时候,操作什么的都正确(数据库可以看见这些操作的正确性),可是内存在不停的增加,cpu也占用100%了,这是为什么呢
while (true) {}
你这是死循环啊。。不管里面是什么,都会100%的,时间是搞死机器的良药啊
我这是要不断的对数据库里面的内容做判断 采用的死循环
@.F.: ...这是。。。死循环的结果只有一个:死。你可以另外开启一个县城定时来搞这个事情。简单点有个什么timer的东西,每隔xx秒执行一次。怎么能够明摆着用死循环呢。。
@.F.: 这样子搞:
public class Monitor { private System.Timers.Timer timer = new System.Timers.Timer(); public void StartMonitor() { InitializeTimer(); } private void InitializeTimer() { timer.Interval = 60000;//设置时间间隔 timer.Elapsed += new System.Timers.ElapsedEventHandler(Timer_Elapsed); timer.Start(); } private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { } }
@小AI: 嗯 你说的这个我明白了
那while(true)是搞死机器的良药...
while(true)拿来是做什么用的呢?
@.F.: 兄弟你把我问住了。。。
@.F.:
@.F.: while(true)最大的作用是让程序永远的运行下去并没有终点。
@小AI: while true同时加sleep吗, 和timer采取不同的方式来达到不断执行。 timer可能导致一个问题:一秒钟执行一次, 一次执行两秒钟。 这个会卡的你很惨。
把while循环去掉
这不是加锁的问题,是代码的问题,建议改进代码
去掉while?