UI线程注册的回调函数能够保证被该线程自己回调吗?
假设有这个一个窗体程序.
上有一个按钮button1, Click事件中 用来启动一个工作线程.
private void button1_Click(object sender, System.EventArgs e)
{
thrd = new Thread(new ThreadStart(doSth));
thrd.Start();
}
该程序还有一个timer1控件,timer1_tick的回调函数中有一个调用
button1_Click(null,null);
换句话说按下button1和 计时到 都会启动一个工作线程.
我现在只想在启动线程前判断一下工作线程是否存在
我知道像button1_Click事件的回调应该是不可重入的,但不知道像 timer_tick 这样的
亦或是 其他的在UI线程内注册的回调函数 是否都能够保证 由UI主线程,而不是线程池中的线程来回调?
即在button1的click事件对 button1_Click事件进行调用时, timer_tick事件会在队列中等待 因为其必须要由UI线程来执行?
button click事件 -> 调用button_click -> 启动线程 -> 调用button_click结束
timer tick 事件 -> -> 调用button_click -> 启动线程 ...
所以我想知道
UI线程注册的回调函数是否能够保证由该线程自己执行. (试了几次,似乎都如此)
多谢!
------解决方案--------------------好像应该如此,因为你只是单线程嘛