社区
C#
帖子详情
C# 上传大量数据时页面卡死
kekemans
2015-05-25 04:06:04
向数据库发送文件 数据过大时界面就会卡死 等操作完服务器库才会返回结果 如何解决卡死的问题啊 各路大神求解救
...全文
439
5
打赏
收藏
C# 上传大量数据时页面卡死
向数据库发送文件 数据过大时界面就会卡死 等操作完服务器库才会返回结果 如何解决卡死的问题啊 各路大神求解救
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
kekemans
2015-05-26
打赏
举报
回复
那执行完了怎么返回说执行完了?
fangpengyu
2015-05-25
打赏
举报
回复
多线程操作,就不会影响主线程,比较简单的方法,定义一个TaskFactory taskFactory=new TaskFactory(); taskFactory.StartNew(()=>{里面是要放入多线程执行的代码 }); 比用Thread这个创建多线程简单,不懂上网查查就知道了
kekemans
2015-05-25
打赏
举报
回复
//上传数据实现 public bool UpLoading() { System.Threading.Thread.Sleep(100); string filename; int node_count = 0; filename = "/"; //遍历树型控件 if (GuanTreeView.Nodes[0] == null) { return false; } if (GuanTreeView.Nodes[0].Nodes[0] == null) { return false; } FileStream fs; string curr_path = System.Environment.CurrentDirectory; DateTime curr_date_time = new System.DateTime(); curr_date_time = System.DateTime.Now; int i = 0; node_count = GuanTreeView.Nodes[0].GetNodeCount(true); for (i = 0; i < node_count; i++) { if (GuanTreeView.Nodes[0].Nodes[i].Checked == true) { //组成文件名 string sel_string = this.GuanTreeView.Nodes[0].Nodes[i].Text.ToString(); string tmp1 = sel_string.Substring(0, sel_string.IndexOf('-')); int i_start = Convert.ToInt32(tmp1); int j = i_start / 1000; file_name = curr_path + "\\tmp\\" + txtBranCode.Text + curr_date_time.Year.ToString() + curr_date_time.Month.ToString() + curr_date_time.Day.ToString() + j.ToString() + ".txt"; //先发送一个指令过去 string zhiling = "9999|" + txtBranCode.Text + curr_date_time.Year.ToString() + curr_date_time.Month.ToString() + curr_date_time.Day.ToString() + j.ToString() + ".txt|1|"; //接收到返回指令后开始传文件 byte[] buffer = new byte[2048]; buffer = Encoding.Default.GetBytes(zhiling); LoginForm.m_socket.Send(buffer); System.Threading.Thread.Sleep(10); fs = File.Open(file_name, FileMode.Open); StreamReader sr = new StreamReader(fs); zhiling = "9999|" + txtBranCode.Text + curr_date_time.Year.ToString() + curr_date_time.Month.ToString() + curr_date_time.Day.ToString() + j.ToString() + ".txt|2|"; buffer = Encoding.Default.GetBytes(zhiling); LoginForm.m_socket.Send(buffer); System.Threading.Thread.Sleep(100); } } return true; } 这是上传的方法 怎么多线程不能卡死
邱_子墨
2015-05-25
打赏
举报
回复
楼上兄弟说的正解
於黾
2015-05-25
打赏
举报
回复
用多线程啊,不要把耗时的操作都放主线程里
ajax提交表单,导致浏览器
卡死
一、背景 这是刚刚遇到的一个问题。说来也奇怪,打开浏览器的调试模式,点击ajax的提交按钮,然后console和network都毫无反应,浏览器也
卡死
了,网页关不掉。 如图所示,点击按钮之后,整个
页面
毫无反应,然后此
时
浏览器已经成功
卡死
。我听到电脑店额散热扇在疯狂的嚎叫着,电脑使用内存也在稳步增长。 然后我又试了几次,发现在刚点击按钮的
时
候,是可以关掉
C#
实现大文件
上传
一、 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行
上传
; 支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传。刷新
页面
后继续传输。关闭浏览器后保留进度信息。 支持文件夹批量
上传
下载,服务器端保留文件夹层级结构,服务器端文件夹层级结构与本地相同。 支持大文件批量
上传
(20G)和下载,同
时
需要保证
上传
期间用户电脑不出现
卡死
等体验; 支持文件夹
上传
,文件夹中的文件数量达到1万个以上,且包含层级结构。 支持断点续传,关闭浏览器或刷新浏
几百万
数据
量的Excel导出会内存溢出和卡顿?那是你没用对方法!
一. 简介 导出是后台管理系统的常用功能,当
数据
量特别大的
时
候会内存溢出和卡顿
页面
,曾经自己封装过一个导出,采用了分批查询
数据
来避免内存溢出和使用SXSSFWorkbook方式缓存
数据
到文件上以解决下载大文件EXCEL
卡死
页面
的问题。 不过一是存在封装不太友好使用不方便的问题,二是这些poi的操作方式仍然存在内存占用过大的问题,三是存在空循环和整除的
时
候
数据
有缺陷的问题,以及存在内存溢出的隐患。 无意间查询到阿里开源的EasyExcel框架,发现可以将解析的EXCEL的内存占用控制在KB级别,并且绝对不会内
从系统报表
页面
导出20w条
数据
到本地只用了4秒,我是如何做到的
其实稍微会一点excel技巧的童鞋,可以利用excel导入
数据
这个功能,
数据
->导入
数据
,根据提示一步步,当中只要选择逗号分隔就可以了,关键列可以定义格式,10秒就能完成
数据
的导入。点击执行按钮之后,点下方刷新按钮,可以看到一条异步下载记录,状态是P,表示pending状态,不停刷新刷新按钮,大概几秒后,这一条记录就变成S状态了,表示Success。学弟拿到我的示例代码后,经过一个礼拜的修改后,上线了
页面
导出的新版本,所有的报表提交异步作业,大家统一到下载中心去进行查看和下载文件。支持多人同
时
在线导出。
上传
大文件解决方案资源
这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问
上传
接口的
时
候,向后端传入参数:当前为第几块文件,和分片总数 下面直接贴代码吧,一些难懂的我大部分都加上注释了:
上传
文件实体类: 看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。 publicclassFileInf{ publicFileInf(){} publicStringid=""; publicStringpid=""; pu...
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章