【提问】难题,多线程处理到底该咋用,大家进来看看
我在业务层有一个报表处理程序 ,就叫它reportprovider,里面有很多方法,诸如先读取客户端excel里的公式,然后再通过公式去实时数据库取值等等。里面很多操作。
界面层有一个reportview.aspx页面会调用到上面那个业务层,因为都是客户上传过来的excel模板然后再调用处理程序的
客户端的excel模板根本不知道会有多大,根据客户的需要来的。
一般大点的通过报表处理程序一般时间都会非常长(10多分钟以上)
现在我想客户在reportview处理报表的时候,如果超过5分钟服务器还没有处理完成的话,就提示它已经超时。
可是我现在的做法是这样的。(行不通)
我先在运行reportview 这个页面的时候创建一个datetime对象记录当前时间。比如datetime executeTime = new dateTime();
然后在调用报表处理程序的一个方法里面创建了一个System.Threading timmer
timmer 有一个回调方法定义为Timeout
timeout 定义如下
private void timeout(object state)
{
//在这里定义时间,减去前面创建的开始执行时间做判断
datespan interval = datetime.now - executeTime;
//这里判断datespan是否大于5分钟。大于的话就提示用户超时。
}
现在问题就来了。
就算提示用户超时之后,服务器的业务层reportprovider已经开始处理用户上传的excel .
我想知道如何中止这个处理程序。
多线程应该怎样写
大家不用考虑我的sqlcommand是否会超时。以及.net页面是否超时。因为我都设置了无限期时间。
现在就告诉我怎样做这个事情吧。
困扰好久了