本人写了个程序 代码如此:我说下大体思路: 我就是做一个TIMER 由于我需要的操作不是同步的,所以我用了线程,我的思路是重新启动个线程,然后来执行播放声音,那么我的程序写的是每1秒都执行这个线程,也就是说每秒都要有线程开启,那么开启的线程是否需要关闭?还是线程开启后他执行后就自动关闭? 我现在的疑问是:是否会造成系统由于打开过多线程而崩溃掉?
其实就是:1:线程打开,他执行后是否会自动关闭?
2:线程开启后是否需要手动关闭?
3:如果需要手动关闭,怎么关闭?我的意思是在什么处理的时候进行关闭?而不是关闭指令怎么写
/// <summary>
/// 新开线程播放声音
/// </summary>
/// <param name="a"></param>
private void voice(voicetype a)
{
if((int)a==0)
{
Thread tr = new Thread(TG);
tr.Start();
}
if ((int)a == 1)
{
Thread tr = new Thread(CP);
tr.Start();
}
if ((int)a == 2)
{
Thread tr = new Thread(ERROR);
tr.Start();
}
}
/// <summary>
/// 通过门票声音
/// </summary>
void TG()
{
System.Media.SoundPlayer sp = new SoundPlayer();
sp.SoundLocation = "TG.wav";
sp.Load();
sp.PlaySync();
}
/// <summary>
/// 重复进入声音
/// </summary>
void CP()
{
System.Media.SoundPlayer sp = new SoundPlayer();
sp.SoundLocation = "CP.wav";
sp.Load();
sp.PlaySync();
}
/// <summary>
/// 非法门票声音
/// </summary>
void ERROR()
{
System.Media.SoundPlayer sp = new SoundPlayer();
sp.SoundLocation = "ERROR.wav";
sp.Load();
sp.PlaySync();
}
/// <summary>
/// 枚举OK为合法,cancle为重复进入,error为非法门票
/// </summary>
public enum voicetype
{
ok,
cancle,
error
}
其实就是:1:线程打开,他执行后是否会自动关闭?
2:线程开启后是否需要手动关闭?
3:如果需要手动关闭,怎么关闭?我的意思是在什么处理的时候进行关闭?而不是关闭指令怎么写
/// <summary>
/// 新开线程播放声音
/// </summary>
/// <param name="a"></param>
private void voice(voicetype a)
{
if((int)a==0)
{
Thread tr = new Thread(TG);
tr.Start();
}
if ((int)a == 1)
{
Thread tr = new Thread(CP);
tr.Start();
}
if ((int)a == 2)
{
Thread tr = new Thread(ERROR);
tr.Start();
}
}
/// <summary>
/// 通过门票声音
/// </summary>
void TG()
{
System.Media.SoundPlayer sp = new SoundPlayer();
sp.SoundLocation = "TG.wav";
sp.Load();
sp.PlaySync();
}
/// <summary>
/// 重复进入声音
/// </summary>
void CP()
{
System.Media.SoundPlayer sp = new SoundPlayer();
sp.SoundLocation = "CP.wav";
sp.Load();
sp.PlaySync();
}
/// <summary>
/// 非法门票声音
/// </summary>
void ERROR()
{
System.Media.SoundPlayer sp = new SoundPlayer();
sp.SoundLocation = "ERROR.wav";
sp.Load();
sp.PlaySync();
}
/// <summary>
/// 枚举OK为合法,cancle为重复进入,error为非法门票
/// </summary>
public enum voicetype
{
ok,
cancle,
error
}
1、线程打开,他执行后是否会自动关闭? 线程开启,会不会关闭要看你线程执行的方法,如你的线程执行方法中有打开窗体,就不会自动退出,因为窗体SHOW出来后会阻塞线程继续执行;如你的方法里有类似于while(true){},自然线程也不会退出等等,总之只要你的方法中没有阻塞线程运行的东东,线程在执行完后会退出。
2、如果线程阻塞或还没有运行完成,而你又要退出程序,这个时候要做退出线程处理,另:如果你开的线程指明是后台线程,不退出的话在主线程退出后会自动销毁,否则,进程退出你会在进程管理器中看到你的程序还在运行。
3、不知道要回答你什么
我的 线程中无阻塞,他只是进行一个声音的播放,播放1个wav后 就OK了,当第2秒的时候我的第1秒程序还没有执行完
我刚才听了下声音,第2秒的声音会排在第1秒声音后执行,也就是说线程里面是否会有一个类似于等待队列的东西?按顺序执行? 不停的开启播放声音的线程,他们会一直在等待队列中等待,然后当第1秒执行完播放后,他执行第2秒,直到等待全执行完毕他自行进行关闭?