找回密码
 立即注册

QQ登录

只需一步,快速开始

hptj

高级会员

72

主题

240

帖子

1170

积分

高级会员

积分
1170

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

hptj
高级会员   /  发表于:2013-11-29 10:42  /   查看:11658  /  回复:16
PrintSheet是在单独线程中开始,有没有什么属性可能轮循,从而知道,当前打印的线程有没有完成打印任务。我的业务是打印成一个PDF,然后下面的代码马上会使用这个PDF,但在打印线程没完成之前,这个PDF是不能使用的。

16 个回复

倒序浏览
hptj
高级会员   /  发表于:2013-11-29 14:27:00
沙发

这是代码

回复 1楼hptj的帖子


Demo.rar (1.55 MB, 下载次数: 1)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-29 14:30:00
板凳
回复 1楼hptj的帖子

试试这段代码:

  1. void fpSpread1_PrintMessageBox(object sender, FarPoint.Win.Spread.PrintMessageBoxEventArgs e)
  2.         {
  3.             if (e.BeginPrinting==false)
  4.             {
  5.                 System.Diagnostics.Process.Start("test.pdf");
  6.             }
  7.         }
复制代码
回复 使用道具 举报
hptj
高级会员   /  发表于:2013-11-29 17:10:00
地板

调用的线程不再存在

出现“调用的线程不再存在”的错误,麻烦您看下源码。出了这个错以后,fpSpread1_PrintMessageBox这个事件进不去。如果FarPoint打印是单线程就好了,多线程安全和速度保障我们可以自己处理。
目标线程不再存在.rar (1.55 MB, 下载次数: 4)
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-11-29 18:10:00
5#
回复 4楼hptj的帖子

问题我重现了,正在调查中,周一回复。
回复 使用道具 举报
hptj
高级会员   /  发表于:2013-11-29 20:06:00
6#
好的,辛苦
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-2 18:58:00
7#
回复 6楼hptj的帖子

hptj 你好,
我查看 OutPut 信息:
The thread '<No Name>' (0x362c) has exited with code 0 (0x0).
The thread '<No Name>' (0x3574) has exited with code 0 (0x0).

线程在这个时候已经退出了。
原因我现在也正在查找,有新的线索我会通知你。
回复 使用道具 举报
hptj
高级会员   /  发表于:2013-12-2 19:50:00
8#
是的,线程在执行完它的代码后就退出了,但你又不能sleep这个线程,因为sleep以后,PDF根本打印不出来,好像FarPoint的PDF打印线程还得依靠这个线程工作。
还有一种方式是设置一个循环,线程一直执行,直到循环变量为false,但这个变量得由FarPoint的PDF打印线程完成任务后设置为false,我不知道怎么访问这个打印线程。有没有不开线程的打印方式,FarPoint控件不要开线程去打印,就单线程打印,客户可以自己写多线程代码。
回复 使用道具 举报
hptj
高级会员   /  发表于:2013-12-2 19:51:00
9#
另外设置循环可能会导致和sleep一样的后果:PDF根本打印不出来。
回复 使用道具 举报
iceman
社区贡献组   /  发表于:2013-12-3 15:51:00
10#
回复 9楼hptj的帖子

hptj 你好,

关于能否调用新的线程进行打印,我需要和产品组进行确认。
在得到反馈后回复给你。

谢谢
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部