找回密码
 立即注册

QQ登录

只需一步,快速开始

zsz1112

注册会员

7

主题

19

帖子

143

积分

注册会员

积分
143

活字格认证微信认证勋章元老葡萄

[已处理] Spread多线程问题

zsz1112
注册会员   /  发表于:2014-4-29 12:09  /   查看:10795  /  回复:11
1、创建一个导出pdf文件的线程,在线程中打开一个模板文件,。。。,导出pdf文件,线程被销毁后提示“调用方法时发生错误,目标线程不存在。”报错。(见附件程序)
2、如果我们创建多个线程,做步骤1的操作,需要打开1000个模板文件(比如说),代码的方法中只有Open,没有Close,应该如何回收?是否有问题?
3、一个模板文件同时被多个线程操作,会有问题,能否从spread中的方法判断该文档已经打开?或是有其他的处理方式?

11 个回复

倒序浏览
iceman
社区贡献组   /  发表于:2014-4-29 13:46:00
沙发
回复 1楼zsz1112的帖子

感谢你的问题反馈,但是附件没有上传成功,请重新上传,谢谢
回复 使用道具 举报
zsz1112
注册会员   /  发表于:2014-4-29 14:14:00
板凳
回复 2楼iceman的帖子

不好意思啊!刚才由于操作错误,没有上传附件,程序见附件。
引用的dll文件.png

SpreadTest.rar

50.36 KB, 下载次数: 914

回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-4-29 14:17:00
地板
回复 3楼zsz1112的帖子

恩 附件已经查收 稍后给你反馈
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2014-4-29 16:33:00
5#
回复 1楼zsz1112的帖子

zsz1112

运行你上传的示例工程时类库类型的工程,我们将其修改为应用程序之后可以运行,只是我们得到这样的错误提示,与你提供的错误信息有所不同,请你再次运行我们修改后的程序,看得到什么样的提示。同时, 我这边也在继续调查该问题。

SpreadTest1.zip (18.4 KB, 下载次数: 880)
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2014-4-30 10:18:00
6#
你好

我这边分析了你的整个代码结构,并做如下修改之后附件中的程序在我的环境中能够正常运行,也请你在你的环境中测试一下。

修改 TestFileLogic.cs 中ExportToPdf方法的如下代码


//fpSpread1.PrintSheet(0);
修改为
fpSpread1.SafePrint(fpSpread1,0);

任何问题请联系我们。

SpreadTest2.zip (28.22 KB, 下载次数: 826)
回复 使用道具 举报
zsz1112
注册会员   /  发表于:2014-4-30 10:24:00
7#
回复 6楼dof的帖子

好的!谢谢哈!
回复 使用道具 举报
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2014-4-30 15:15:00
8#
Spread 提供了两个 Open 方法的重载,你可以根据需要选择使用哪种重载:

1、直接打开文件
  1. fpSpread1.Open("Area.xml");
复制代码


2、通过Stream来加载文件,便于自己管理文件的打开和关闭
  1.     FileStream fs = new FileStream("Area.xml", System.IO.FileMode.Open);
  2.     fpSpread1.Open(fs);
  3.     fs.Close();
复制代码


此外,多文件的导入和导出操作性能会体现在CPU占用率/内存占用/磁盘读写,而这些性能主要取决于文件的大小,所以,你可以分别评估将导入的文件存放在本地磁盘,或者以Stream的形式存放到数据库,以确定哪种方式最适合你的应用场景。
回复 使用道具 举报
zsz1112
注册会员   /  发表于:2014-5-7 14:04:00
9#
回复 8楼dof的帖子

嗯,好的!谢谢哈!不好意思哈!今天才看到!:Z
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2014-5-7 14:30:00
10#
回复 9楼zsz1112的帖子

客气了。帖子先关闭了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部