我开始在后台处理一个线程。我想在完成程序后在页面上更改我的标签。
但我的价值不会改变。
我的样本:
protected void Page_Load(object sender, EventArgs e)
{
new Thread(() => ActionStart()) { IsBackground = true }.Start();
}
bool _shouldStop = false;
public void ActionStart()
{
while (!_shouldStop)
{
// ....
requestStop();
}
//thread finished
ChangeValue();
}
private void ChangeValue()
{
lab.Text = "Changed";
}
private void requestStop()
{
_shouldStop = true;
}
答案 0 :(得分:1)
我担心在线程上运行此代码对您没有帮助,因为考虑到页面生命周期,您无法确保线程在完成之前完成。通常,你改变一个控件值的最后一次机会是它的PreRender
事件,但这取决于它是如何被开发的。
但是,如果您需要并行处理,您仍然可以在Parallel.Foreach
之类的页面事件中使用PageLoad
来利用并行性而不是异步({{1只有当所有线程都完成时才会返回。)