timer控件,急,跪求大神 在线程里面用timer控件去触发线程,设置3秒后启动一次,为什么启动一次后,不会再触发线程了呢?不明白,求大神解救。感谢感谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 线程结束了,里面创建的timer就销毁了 timer的Elapsed事件里直接执行方法不就行了,为什么要要触发线程;代码贴出来才能帮你找原因; private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); MessageBox.Show("1111111"); SetLabelText st = new SetLabelText(zhuangHua); _thread = new Thread(new ParameterizedThreadStart(st)); _thread.IsBackground = true; _thread.Start(); }然后在zhuangHua方法的最后面timer.Start(); 这是我主要的代码:麻烦给我帮我看看 private void timer1_Tick(object sender, EventArgs e) { timer1.Stop(); MessageBox.Show("1111111"); SetLabelText st = new SetLabelText(zhuangHua); _thread = new Thread(new ParameterizedThreadStart(st)); _thread.IsBackground = true; _thread.Start(); } private void zhuangHua(object canshu) { string str = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f"; string[] strs = str.Split(','); string str1 = "L00"; string str2 = "R00000000"; string str3 = "C00000000"; string[] folders = Directory.GetDirectories(@textBox1.Text); for (int i = 0; i < folders.Length; i++) { this.Invoke((EventHandler)(delegate//线程间操作无效: 从不是创建控件“listBox1”的线程访问它 { listBox1.Items.Add("级别" + i); })); //listBox1.Items.Add("级别" + i); string pathUrlone = textBox2.Text + "\\" + i; if (!Directory.Exists(pathUrlone)) //保证不重复 { Directory.CreateDirectory(pathUrlone); } //listBox1.Items.Add(pathUrlone); string[] folders1 = Directory.GetDirectories(folders[i]); int j = 0; foreach (string s in folders1) { string[] files = Directory.GetFiles(s);//读取文件Convert.ToInt32("CC", 16)Convert.ToString(29, 16) try { if (Convert.ToInt32(s.Substring(s.LastIndexOf("R") + 1), 16) < Math.Pow(2, i)) { string pathUrlbk = textBox2.Text + "\\" + i + "\\" + Convert.ToInt32(s.Substring(s.LastIndexOf("R") + 1), 16); if (!Directory.Exists(pathUrlbk)) //保证不重复 { Directory.CreateDirectory(pathUrlbk); } //C#遍历指定文件夹中的所有文件 DirectoryInfo TheFolder = new DirectoryInfo(s); foreach (FileInfo NextFile in TheFolder.GetFiles()) { try { int aa = Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16); if (Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16) < Math.Pow(2, i)) { string pathUrlbk1 = textBox2.Text + "\\" + Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16) + "\\" + Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16); string strUrl = textBox2.Text + "\\" + i + "\\" + j + "\\Tile_" + j + "_" + Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16) + ".JPG"; //File.Delete(strUrl); File.Copy(NextFile.FullName,strUrl); // listBox1.Items.Add(Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16)); this.Invoke((EventHandler)(delegate { listBox1.Items.Add(NextFile.FullName + " to " + strUrl); })); } } catch { } } } } catch { } j++; } } timer1.Start(); } 你线程本来都可以控制时间,你为什么还要那time线程去操控另一个线程? 用线程的sleep方法是设定时间呀,但是这里就是要求要用timer来控制,怎么解决呀? 已经解决了,就是在方法里面加 this.Invoke((EventHandler)(delegate//timer控件启动线程 { timer1.Start(); })); 问个正则表达式 一个函数怎么实现? 用进程池接收TCP数据并写入文件的疑问 求string长度 求救!datatable怎么每次循环加一行? 编写这种软件的思路是什么(标题说不清楚),求高手指教! 初级问题 如何给ASP.NET的textbox赋值问题 我把自己写的类放在了XLZClass里,在MainForm.CS里面怎么调用? C# 通过SendMessage实现对一个窗体进行键盘和鼠标操作 .net写的Com组件用log4net记录异常日志,为何记录不了! 关于SendKeys.SendWait()方法
{
timer1.Stop();
MessageBox.Show("1111111");
SetLabelText st = new SetLabelText(zhuangHua);
_thread = new Thread(new ParameterizedThreadStart(st));
_thread.IsBackground = true;
_thread.Start();
}然后在zhuangHua方法的最后面timer.Start();
private void timer1_Tick(object sender, EventArgs e)
{
timer1.Stop();
MessageBox.Show("1111111");
SetLabelText st = new SetLabelText(zhuangHua);
_thread = new Thread(new ParameterizedThreadStart(st));
_thread.IsBackground = true;
_thread.Start();
}
private void zhuangHua(object canshu)
{
string str = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f";
string[] strs = str.Split(',');
string str1 = "L00";
string str2 = "R00000000";
string str3 = "C00000000"; string[] folders = Directory.GetDirectories(@textBox1.Text);
for (int i = 0; i < folders.Length; i++)
{
this.Invoke((EventHandler)(delegate//线程间操作无效: 从不是创建控件“listBox1”的线程访问它
{
listBox1.Items.Add("级别" + i);
}));
//listBox1.Items.Add("级别" + i);
string pathUrlone = textBox2.Text + "\\" + i;
if (!Directory.Exists(pathUrlone)) //保证不重复
{
Directory.CreateDirectory(pathUrlone);
}
//listBox1.Items.Add(pathUrlone);
string[] folders1 = Directory.GetDirectories(folders[i]);
int j = 0;
foreach (string s in folders1)
{
string[] files = Directory.GetFiles(s);//读取文件Convert.ToInt32("CC", 16)Convert.ToString(29, 16)
try
{
if (Convert.ToInt32(s.Substring(s.LastIndexOf("R") + 1), 16) < Math.Pow(2, i))
{
string pathUrlbk = textBox2.Text + "\\" + i + "\\" + Convert.ToInt32(s.Substring(s.LastIndexOf("R") + 1), 16);
if (!Directory.Exists(pathUrlbk)) //保证不重复
{
Directory.CreateDirectory(pathUrlbk);
} //C#遍历指定文件夹中的所有文件
DirectoryInfo TheFolder = new DirectoryInfo(s);
foreach (FileInfo NextFile in TheFolder.GetFiles())
{
try
{
int aa = Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16);
if (Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16) < Math.Pow(2, i))
{
string pathUrlbk1 = textBox2.Text + "\\" + Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16) + "\\" + Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16);
string strUrl = textBox2.Text + "\\" + i + "\\" + j + "\\Tile_" + j + "_" + Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16) + ".JPG";
//File.Delete(strUrl);
File.Copy(NextFile.FullName,strUrl);
// listBox1.Items.Add(Convert.ToInt32(NextFile.Name.Substring(1, NextFile.Name.IndexOf(".") - 1), 16));
this.Invoke((EventHandler)(delegate
{
listBox1.Items.Add(NextFile.FullName + " to " + strUrl);
}));
}
}
catch
{ }
}
}
}
catch
{
}
j++;
}
} timer1.Start();
}
{
timer1.Start();
}));