首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >处理错误PInvokeStackImbalance

处理错误PInvokeStackImbalance
EN

Stack Overflow用户
提问于 2018-07-25 03:08:50
回答 1查看 155关注 0票数 0

根据打印方法的结果,我想更改复选框的状态。如果打印机没有连接或找不到,我想处理它。现在,如果找不到打印机,即没有连接,我的代码就会抛出一个PInvokeStackImbalance Occured,如果我按下继续键,它就不会转到catch(异常ex)子句。我想要处理这个错误,不是为了获取catch子句,就是为了捕获这个PInvokeStackImbalance消息。下面是我的密码。

代码语言:javascript
复制
private void btnPrint_Click(object sender, EventArgs e)
        {
            if (txtPrinterName.Text == string.Empty)
            {
                MessageBox.Show("Enter a printer name");
                return;
            }
            try
            {
                var mstrFullCutCode = (char)27 + (char)109;
                _finalLength = noteToPrint;
                var printingObject = new PrintClass.Class1.RawPrinterHelper();
                var result = PrintClass.Class1.RawPrinterHelper.SendStringToPrinter(txtPrinterName.Text, _finalLength + mstrFullCutCode);
                frmMain.Instance.LblStatus.Text = "Printer is found: " + result;
                if ((bool)result)
                {
                    frmMain.Instance.CbPrinter.Checked = true;
                }
            }catch(Exception ex)
            {
                frmMain.Instance.LblStatus.Text = "Error: " + ex.Message;
            }

        }

这是托管调试助手的图像

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-25 22:38:57

…如果我按下“继续”,它就不会转到我的catch(例外情况)子句。我想要处理这个错误,不是为了获取catch子句,就是为了捕获这个PInvokeStackImbalance消息。

我觉得你做不到。

虽然MDA看起来像一个未处理的异常,但它不是异常。例如,参见页面使用托管调试助理诊断错误上的第一个注意事项,其中部分内容是(重点添加的)…

如果在调试器不存在时引发MDA事件,则事件消息将显示在未处理的异常对话框中,尽管它不是未处理的异常

PInvokeStackImbalance托管调试助手(MDA) 。因此,它通常表示PInvoke使用的托管签名中的错误,而不是缺少的打印机

您应该检查您正在使用的本机方法的声明--很可能是OpenPrinter

如果使用来自KB第322091条KB第322091条类,请注意SendBytesToPrinter返回truefalse以指示成功或失败,但SendStringToPrinter忽略该返回值并始终返回true

SendStringToPrinter函数应该真正返回SendBytesToPrinter的结果,您的代码应该检查返回值,并调用GetLastWin32Error来获取有关故障的更多信息。您应该得到一个1801错误代码-打印机名称无效。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51510249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档