12 个解决方案
#1
提交按钮 之前 校验是否输入,输入了就开启线程执行;没输入 提示输入信息。
#2
这样做肯定挨批啦。有数据库没,或者文件也行啊。将数据写入数据库或者文件,然后从那个里面读。
#3
.net框架,为什么要开线程,什么功能?
#4
.net中慎用static
因为声明为static之后,所有用户都用的同一个对象了
因为声明为static之后,所有用户都用的同一个对象了
#5
用ManualResetEvent或AutoResetEvent,在线程里需要等待输入的地方用WaitOne()阻塞线程,用户输入完成就Set()
#6
类似于工作流引擎的东西,多个事件而且需要自动并发执行,所以我开了线程,如果不能static,那有什么好的方法没?
#7
page_load完成后让线程睡眠,用户点击后thread.start()
#8
不是这样的,原本用户输入是一个流程的一个步骤,等用户输入了,我才能继续完成这个步骤,然后进入下一步骤,一个步骤为一个线程,现在线程已经开始,只是需要阻塞等结果,但是在BLL我获取不了页面上用户输入的东西,所以就在页面对应的xxxx.aspx.cs获取,处理了在返回个结果给BLL的某个全局static变量,然后线程一直在查询这个变量,找到有结果才跳出循环进入下一步,现在问题是要换种方法,求教
#9
问题是线程不是在xxx.aspx.cs文件启动的,是在BLL的某个类里面启动的,而且要求是启动之后执行一些语句然后阻塞,等待用户输入再执行剩下语句,有办法么
#10
谢谢,还是有疑问,项目是层次结构的,用户输入在USL层,BLL层的线程调用WaitOne()后,USL层有了结果怎么使用set()让线程继续执行?因为是多线程,每个线程都执行一个事件,有可能在同一时间存在多个事件都是需要阻塞等待用户输入的,怎么找出正确的线程并启动呢?
#11
有多个线程的话,就用数组
ManualResetEvent[] man = new ManualResetEvent[n];
//你的代码段...
//完成操作的线程就调用Set()
WaitHandle.WaitAll(man); //等待输入的线程调用WaitAll
#12
为什么不将程序分成合理的小段函数,使用事件触发。
#1
提交按钮 之前 校验是否输入,输入了就开启线程执行;没输入 提示输入信息。
#2
这样做肯定挨批啦。有数据库没,或者文件也行啊。将数据写入数据库或者文件,然后从那个里面读。
#3
.net框架,为什么要开线程,什么功能?
#4
.net中慎用static
因为声明为static之后,所有用户都用的同一个对象了
因为声明为static之后,所有用户都用的同一个对象了
#5
用ManualResetEvent或AutoResetEvent,在线程里需要等待输入的地方用WaitOne()阻塞线程,用户输入完成就Set()
#6
类似于工作流引擎的东西,多个事件而且需要自动并发执行,所以我开了线程,如果不能static,那有什么好的方法没?
#7
page_load完成后让线程睡眠,用户点击后thread.start()
#8
不是这样的,原本用户输入是一个流程的一个步骤,等用户输入了,我才能继续完成这个步骤,然后进入下一步骤,一个步骤为一个线程,现在线程已经开始,只是需要阻塞等结果,但是在BLL我获取不了页面上用户输入的东西,所以就在页面对应的xxxx.aspx.cs获取,处理了在返回个结果给BLL的某个全局static变量,然后线程一直在查询这个变量,找到有结果才跳出循环进入下一步,现在问题是要换种方法,求教
#9
问题是线程不是在xxx.aspx.cs文件启动的,是在BLL的某个类里面启动的,而且要求是启动之后执行一些语句然后阻塞,等待用户输入再执行剩下语句,有办法么
#10
谢谢,还是有疑问,项目是层次结构的,用户输入在USL层,BLL层的线程调用WaitOne()后,USL层有了结果怎么使用set()让线程继续执行?因为是多线程,每个线程都执行一个事件,有可能在同一时间存在多个事件都是需要阻塞等待用户输入的,怎么找出正确的线程并启动呢?
#11
有多个线程的话,就用数组
ManualResetEvent[] man = new ManualResetEvent[n];
//你的代码段...
//完成操作的线程就调用Set()
WaitHandle.WaitAll(man); //等待输入的线程调用WaitAll
#12
为什么不将程序分成合理的小段函数,使用事件触发。