[c#]gis 15:16:06
请问有人开发过多线程的插件了么
[vb.net]斌 15:21:28
改好了
[VB.net]福萝卜 15:25:13
多线程绘图老崩溃
[c#]gis 15:25:41
谁有这方面的成功经验
[C#|C++]忽悠悠 15:25:51
多线程可以用
但是有限制条件
[c#]gis 15:26:02
比如
[VB.net]福萝卜 15:26:06
赐教
[C#|C++]忽悠悠 15:26:49
不要在新开的线程里操作cad的数据库
[C#|C++]忽悠悠 15:28:03
acdb不支持多线程,
[c#]gis 15:28:28
的实验也是这样
Autodesk.AutoCAD.GraphicsSystem.Device dev = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.GraphicsManager.CreateAutoCADOffScreenDevice()
这句就出错
[VB.net]福萝卜 15:28:56
我试过在ui线程里仅读取数据库都不行
[vb.net]斌 15:29:00
谁有VB.NET开发的 托管模式的代码 求分享
[C#|C++]忽悠悠 15:29:07
读写都不行
显示也不行
[c#]gis 15:29:21
ui线程都不行?
[VB.net]福萝卜 15:29:23
假死状态伤不起啊
[c#]gis 15:29:26
怎么会?
平时不多线程不就是在ui线程么
你干点什么长的,程序就得先死在这里了
[C#|C++]忽悠悠 15:29:58
没办法的,CAD内核不支持
[C#|C++]忽悠悠 15:31:38
处理arx相关内容的时候,没办法用多线程,你在处理大数据运算或者与web交互,读写sql的时候再用多线程吧
不让程序卡死的办法有很多种,
不一定非得用多线程
[VB.net]福萝卜 15:32:22
看来是我水平不够
[C#|C++]忽悠悠 15:32:38
多线程也不是肯定可以让程序不卡死
[C#|C++]忽悠悠 15:33:11
最简单的办法,在循环里面加入进度条,然后处理消息循环,这样cad肯定不回卡死
[c#]gis 15:33:23
我确实是有一些东西要消耗时间,那如何做到不妨碍用户继续操作图形?
[C#]飞诗 15:34:13
[C#]快狗慢猪 15:34:50
耗时部分处理的是什么
[C#|C++]忽悠悠 15:35:00
,,我一出来说话你就瞌睡...
[VB.net]福萝卜 15:35:19
[C#]飞诗 15:35:26
说的太高深了
[c#]gis 15:35:39
输出图片
Bitmap b = null;
Rectangle rect = new Rectangle(0, 0, 1024, 1024);
using (Autodesk.AutoCAD.GraphicsSystem.Device dev = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.GraphicsManager.CreateAutoCADOffScreenDevice())
using (Autodesk.AutoCAD.GraphicsSystem.Model model = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.GraphicsManager.CreateAutoCADModel())
using (Autodesk.AutoCAD.GraphicsSystem.View view = new Autodesk.AutoCAD.GraphicsSystem.View())
{
view.VisualStyle = new Autodesk.AutoCAD.GraphicsInterface.VisualStyle(Autodesk.AutoCAD.GraphicsInterface.VisualStyleType.Wireframe2D);
dev.OnSize(rect.Size);
// Set the render type and the background color
dev.DeviceRenderType = Autodesk.AutoCAD.GraphicsSystem.RendererType.Default;
dev.BackgroundColor = Color.White;
dev.Add(view);
dev.Update();
view.Viewport = rect;
using (Transaction tr = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction())
{
BlockTable bt = (BlockTable)tr.GetObject(Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)tr.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForRead);
view.Add(btr, model);
tr.Commit();
}
/ iew.ZoomExtents(new  oint3d(95500, 309000, 0), new  oint3d(97500, 311000, 0));
view.ZoomExtents(new  oint3d(94500, 309000, 0), new  oint3d(95500, 310000, 0));
double zoomFactor = (double)rect.Size.Height / (rect.Size.Height - 6);
view.Zoom(zoomFactor);
// Take the snapshot
b = view.GetSnapshot(view.Viewport);
view.EraseAll();
dev.Erase(view);
}
b.Save(@"c:111.jpg");
b.Dispose();
这是代码
[C#]飞诗 15:37:07
是否没锁定图档[qqimg]201307/{719024F2-16B9-C2E4-C3EF-952FC34925D2}.gif[/qqimg]
[c#]gis 15:37:20
kean的blog里拔出来的
[qqimg]201307/{72A110C4-57EE-1973-3E7E-63719C09D1C0}.jpg[/qqimg]
是说我么
[C#]飞诗 15:37:42
是啊
先加锁再操作
[c#]gis 15:47:13
怎么做?
没明白
线程锁? |