乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 257|回复: 14

。网络代码突然跳水

[复制链接]

69

主题

875

帖子

15

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1146
发表于 2016-3-11 17:25:35 | 显示全部楼层 |阅读模式
我参与的一个项目已经运行了几个月,非常稳定,但现在突然间歇性问题出了问题......你不喜欢那种声音吗?无论如何,C#代码从数据库中获取输入,为销售和制造部门做一些事情,然后启动AutoCAD和LISP程序来创建图形。它每天创建50到200张图纸。目前为止,一切都好。这个东西是完全自动化的,所以不需要或允许人机交互。
现在发生的事情是,每天大约运行3-4次,AutoCAD在开始绘制过程之前停滞不前。在调试中,我已经检查过了。当我检查错误消息时,我得到这个:
  1. ERROR:        System.Runtime.InteropServices.COMException (0x8001010A): The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))
  2.    at AutoCAD.IAcadDocument.SendCommand(String Command)
  3.    at BOM_CALCS.LaunchAutoCAD.StartAutoCAD() in C:\Engineering\Calculations\BOM\BOM_CALCS\LaunchAutoCAD.cs:line 55
  4.    at BOM_CALCS.Program.Main(String[] args) in C:\Engineering\Calculations\BOM\BOM_CALCS\Program.cs:line 102

不幸的是,每天3-4次现在已经增长到每天10-12次。对此没有太多帮助,因为它是间歇性的。而所有其他时间都完美运行的相同代码击中了这一点,足以引起关注。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2016-3-11 17:58:53 | 显示全部楼层
此消息:
消息筛选器指示应用程序正忙。
可能提示应用程序一次被多个请求破坏,此链接可能会有所帮助。
https://msdn.microsoft.com/en-us/library/ms228772.aspx
回复

使用道具 举报

57

主题

559

帖子

13

银币

中流砥柱

Rank: 25

铜币
786
发表于 2016-3-11 20:59:23 | 显示全部楼层
谢谢,但我很确定这不是问题所在。有几次我一次看了三(3)次。它几乎总是每5-10分钟运行一次。有时它比较重,但通常足够安静,不会同时跑步。我看到它失败的次数是当它只运行一个实例时。真希望这么简单。这是一个很难破解的问题。
回复

使用道具 举报

51

主题

613

帖子

9

银币

中流砥柱

Rank: 25

铜币
815
发表于 2016-3-11 23:04:07 | 显示全部楼层

嗨,比尔
,我不玩Com,但是:
什么是客户端版本
什么是开发API版本
您尝试发送的命令是什么。
第 55 行及之前失败的代码是什么。
您是否在早期版本的客户端上开发了此应用程序。
应用是否在与客户端相同的计算机上运行。
单个用户还是多个用户 ?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2016-3-13 11:50:59 | 显示全部楼层
谢谢kdub。明天当我回到办公室的时候,我将能够以明确的观点来回答。棘手的是,它已经连续几天、几周完美运行。最近雇佣了一个非常有经验的开发人员,他将RPC服务引入其中。这是我开始注意到这个问题的时候。然而,在他看来,我只能说这是一个间歇性的问题。也就是说,每天100次跑步中,只有10次会有问题。他在开发方面有丰富的经验,我的意思是这个家伙实际上发明了OOP,他认为问题是COM对象没有关闭,但是到目前为止我还没有看到。从明天早上开始,我会和他一起做更多的工作。
回复

使用道具 举报

51

主题

613

帖子

9

银币

中流砥柱

Rank: 25

铜币
815
发表于 2016-3-13 19:56:02 | 显示全部楼层

这也是我的第一个猜测,但是,我还没有发明任何东西
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2016-3-13 22:41:51 | 显示全部楼层

这是点对点论坛的问题之一。
关键信息不会在第一篇文章中提供。
我的问题不应该问。
回复

使用道具 举报

16

主题

506

帖子

6

银币

中流砥柱

Rank: 25

铜币
570
发表于 2016-3-16 11:33:07 | 显示全部楼层
再次感谢大家的耐心等待。现在让我看看我是否可以阐明问题,因为这已经成为我必须解决的主要错误。
这是一个完全自动化的项目,不允许任何用户与它进行交互。唯一的例外是我是主要开发人员,我只在它停滞不前时才搞砸它。基本上,Apache+php(XAMPP)监听来自网络的请求。收到一个后,我的项目的主要.exe从php程序启动。所有这些都运作良好。最终,调用 AutoCAD 以生成图形。 因此,我用来启动AutoCAD的代码是:
  1. using System;
  2. using AutoCAD;
  3. namespace AHD_BOM_CALCS
  4. {
  5.     class LaunchAutoCAD
  6.     {
  7.         private static IAcadApplication vAcadApp = null;
  8.         private static IAcadDocument vAcadDoc = null;
  9.         // CHANGE THIS TO AutoCAD.Application.20 FOR ACAD 2015/16
  10.         private static string vAcadID = "AutoCAD.Application.20";
  11.         private static string LispPath = @"C:/Engineering/04VLISP/ANGLE/Bomber/";
  12.         private static string DwgPath = @"C:\Engineering\09Automated Drawings";
  13.         
  14.         public static void StartAutoCAD()
  15.         {
  16.             try
  17.             {
  18.                 // Check for instance of AutoCAD
  19.                 vAcadApp = (IAcadApplication)System.Runtime.InteropServices.Marshal.GetActiveObject(vAcadID);
  20.             }
  21.             catch (Exception) // If none found start a new instance of AutoCAD
  22.             {
  23.                 System.Type AcadProg = System.Type.GetTypeFromProgID(vAcadID);
  24.                 vAcadApp = (IAcadApplication)System.Activator.CreateInstance(AcadProg);
  25.             }
  26.             string titleblock = "Template1(Automated).dwg";
  27.             if (vAcadApp != null)
  28.             {
  29.                 vAcadApp.Visible = true;
  30.                 vAcadDoc = vAcadApp.Documents.Open(DwgPath + titleblock, true);
  31.                 string LispName = "Bomber.lsp";
  32.                 vAcadDoc.SendCommand("(load "" + LispPath + LispName + "" "The load failed") ");
  33.                 vAcadDoc.SendCommand(LISPVariables.PrepareAcadCmd() + " ");
  34.                 vAcadDoc.SendCommand("(setvar "osmode" 703) ");
  35.                 vAcadDoc.SendCommand("(setvar "cmdecho" 1) ");
  36.                 vAcadDoc.SendCommand("(setvar "pickbox" 5) ");
  37.             
  38.               vAcadDoc.SendCommand("(setq svPath "C:/0/Misc/BomberDevDwgs/") ");
  39.               vAcadDoc.SendCommand("(setq *erp 1) ");
  40.               vAcadDoc.SendCommand("DrawitNow ");
  41.             }
  42.             else
  43.             {
  44.                 Console.WriteLine("ERROR: The drawing file is missing.");
  45.                 Console.ReadKey();
  46.             }
  47.         }
  48.     }
  49. }

在运行此类之前,C#项目会执行一堆计算并将这些结果写入Oracle数据库。所有这些部分都运行良好,从来都不是问题。只有当LaunchAutoCAD类到达SendCommand行时,事情才会向南发展。而且它似乎永远不会在同一条线上失败。有时没有一个命令去,有时其中2或3个去,但后来它停滞了,从来没有得到最后一个命令,即启动LISP代码的“Drawit”。图形随即生成并保存到服务器。它昼夜不停地运行,监听请求。在每天的100多次跑步中,大约有5-10次停滞不前。我已经检查了运行此项目的工作站,并且似乎没有像任务管理器中卡住的acad.exe进程或其他任何东西。我已经冷启动它,看看这是否会清除蜘蛛网,但这没有帮助。正如老话所说,如果可行,我准备在火花塞上小便。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2016-3-16 12:07:28 | 显示全部楼层
由于它在SendCommand()区域跳闸,您可以尝试删除一些命令。这三个真的需要在代码的C#部分中设置吗?在lisp例程的开头运行它们会非常简单和干净,vAcadDoc.SendCommand("(setvar\"osmode\"703) ");。
vAcadDoc.SendCommand("(setvar\"cmdecho\"1) ");。
vAcadDoc.SendCommand("(setvar\"Pickbox\"5) ");
  1. (if (not (= (getvar "osmode") 703)) (setvar "osmode" 703))
  2. (if (not (= (getvar "cmdecho") 1)) (setvar "cmdecho" 1))
  3. (if (not (= (getvar "pickbox") 5)) (setvar "pickbox" 5))

回复

使用道具 举报

51

主题

613

帖子

9

银币

中流砥柱

Rank: 25

铜币
815
发表于 2016-3-16 12:29:03 | 显示全部楼层
https://msdn.microsoft.com/en-us/library/ms228772.aspx
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 19:02 , Processed in 0.219170 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表