问题标签 [handle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
980 浏览

handle - 标准化错误分类和处理

我需要标准化我如何“优雅地”分类和处理错误/异常。

我目前使用一个过程,通过该过程将错误报告给传递错误号、严重性代码、位置信息和额外信息字符串的函数。如果错误是致命的并且应用程序应该死掉,则此函数返回布尔值 true,否则返回 false。作为其过程的一部分,除了向用户提供视觉反馈外,该功能还记录到某些严重级别以上的错误。

错误编号索引解释错误类型的字符串数组,例如:“文件访问”、“用户输入”、“线程创建”、“网络访问”等。严重性代码是 0,1 的二进制或, 2 或 4,0=提供信息,1=user_retry,2=cannot_complete,4=cannot_continue。Location-info 是模块和函数,Extra-info 是参数和局部变量值。

我想把它变成一种标准的错误处理方式,我可以把它放在一个库中并在我的所有应用程序中重复使用。我主要在 Linux 上使用 C/C++,但也希望将生成的库与其他语言/平台一起使用。

  • 一个想法是扩展错误类型数组以指示给定严重级别的某些默认行为,但这是否应该成为所采取的操作并且不给用户选项?

  • 或者:这样的扩展是否应该是用户需要从中选择的选项的子数组?这样做的问题是,这些选项必须是通用的与编程相关的选项,这可能会完全让最终用户感到困惑。

  • 或者:每个使用 error-lib 例程的应用程序是否应该传递自己的错误或默认行为数组 - 但这会破坏库的目的......

  • 或者:是否应该在每个应用程序中处理严重性级别?

或者:你有什么建议?你如何处理错误?我该如何改进呢?

0 投票
3 回答
13496 浏览

.net - 如何在 .NET 中获取当前窗口句柄计数和窗口句柄限制?

我想在 C# 中获取当前窗口句柄数和系统范围的窗口句柄限制。我该怎么做?

0 投票
5 回答
1848 浏览

file - 文件处理程序的限制超过 256

我的代码打开了超过 256 个文件句柄,所以当我在 Solaris 机器上运行它时,我最终会出现“超出文件处理程序限制”错误。

我对此有两个问题

1) 这个限制是只针对 32 位软件还是 64 位软件也受此限制。我用谷歌搜索了一下,发现 64 位软件没有这个限制。(http://developers.sun.com/solaris/articles/stdio_256.html)但是我构建了 64 位静态对象,当我使用它时给出错误。实际上 64 位软件意味着什么?

2)如上面的链接中给出的,我使用 ulimit 来增加文件处理程序限制(在运行时,我的意思是在运行命令之前),导出扩展文件库并且我没有收到任何错误。我们必须做的 Linux ?

谢谢 DL 库马尔

0 投票
4 回答
6946 浏览

handle - ShellExecute() 的句柄 - 父窗口?

我正在尝试使用ShellExecute在 Excel 中打开文件。我在 MSDN 论坛上阅读了有关该功能的信息,并找到了有关句柄的以下信息,这是第一个参数:

“hwnd [in] 用于显示用户界面 (UI) 或错误消息的所有者窗口的句柄。如果操作与窗口无关,则此值可以为 NULL。”

我还听说这被称为父窗口的句柄。什么是父/所有者窗口?正如您在下面看到的,我使用 NULL 作为句柄,但由于操作确实与窗口相关联,我可能需要一个句柄,但我不知道该句柄使用什么。

0 投票
4 回答
2734 浏览

winapi - LPHANDLE 与 HANDLE

在浏览一些代码时,我发现了对OpenPrinter()的调用。代码编译并且工作正常。但是,我们传递的是 aHANDLE而不是LPHANDLE(如 MSDN 中所指定)。我发现在windef.h以下声明中存在:

LP 代表什么?我应该使用 aLPHANDLE还是保留HANDLE

0 投票
4 回答
21189 浏览

windbg - 如何使用 windbg 从挂起转储中找到句柄所有者?

如何在windbg中找出哪个线程是我的事件句柄的所有者:

我在跑

并得到

回来,因为没有名字我还没想出如何让所有者证明我的线程正在等待哪个线程

[编辑] 我必须处理转储,因为需要在用户机器上重新启动原始进程,因此无法调试实时会话

到目前为止我发现的关于这个主题的最佳讨论是在这个博客上,但不幸的是我们最终使用了不同的锁定方法(我最终使用了 WaitForMultipleObjectsEx,描述是针对 WaitForSingleObject),而且他似乎可以访问实时进程

我的线程的堆栈跟踪(在某事上被阻塞并且我正在寻找当前所有者的线程)是:

0 投票
5 回答
15240 浏览

delphi - Delphi:检查文件是否正在使用

我想写入/删除一个文件,但如果该文件正在被另一个程序使用,有时我会崩溃。如何检查文件是否被另一个进程打开或者我可以打开它进行写入?

0 投票
9 回答
22209 浏览

c# - C# 编译错误:“在创建窗口句柄之前,不能对控件调用 Invoke 或 BeginInvoke。”

我刚刚发布了一个关于如何让代表更新另一个表单上的文本框的问题。就在我认为我使用 Invoke 得到答案的时候……这发生了。这是我的代码:

主窗体代码:

记录类代码:

  • 编译错误:

    InvalidOperationException 未处理 - 在创建窗口句柄之前,不能对控件调用 Invoke 或 BeginInvoke。

我已经尝试在 Log 项上创建一个句柄……但这没有用。问题是我不知道我在做什么,我在谷歌上进行了广泛的搜索,却发现了模糊的答案。

在我调用这个委托之前,请告诉我如何创建句柄。当你在做的时候,给我一些方法可以让这个代码更简单。例如,我不想要两个 Add 函数……我必须这样做,因为我无法从 Logging 类中找到要调用的项目。有没有更好的方法来完成我需要做的事情?

谢谢!!!

编辑:

我的项目相当大,但这些是导致此特定问题的唯一项目。

Log是我的 RichTextBox1 (Log.Items.Add(message)) 我将其重命名为 Log,以便重新键入。

我正在从不同的表单调用 updateLog(message) ......让我在这里更新它(尽管我从它调用 updateLog(message) 没有区别仍然给我这个错误)

你们将不得不让事情对我来说更简单......并提供示例。我不明白你们在这里所说的一切......我不知道如何使用方法和句柄的调用。我也研究了它的废话...

第二次编辑:

我相信我已经找到了问题,但不知道如何解决它。

在我的日志记录类中,我使用此代码创建 mainClass:

静态主 mainClass = new Main();

我正在为 Main() 创建一个全新的蓝图副本,包括Log(我正在尝试更新的 Richtextbox)

当我调用 updateLog(message) 时,我相信我正在尝试更新 Main() 的第二个实体上的日志(富文本框),也称为 mainClass。当然,这样做会抛出这个异常,因为我什至没有看到我正在使用的当前 Main 的副本。

这就是我所追求的,感谢其中一位给出答案的人:

我需要不使用 new() 运算符创建 mainClass,因为我不想创建表单的新蓝图,我希望能够编辑当前表单。

上面的代码不起作用,我什至找不到 Application. 这甚至是 C# 语法吗?

如果我能让上面的代码工作,我想我可以解决我的问题,并在几个小时寻求答案后最终解决这个问题。

最终编辑:

感谢下面的一位用户,我想通了。这是我更新的代码:

主窗体代码:

记录类代码:

0 投票
6 回答
6729 浏览

python - 检测python中的文件句柄泄漏?

我的程序似乎正在泄漏文件句柄。我怎样才能知道在哪里?

我的程序在几个不同的地方使用文件句柄——子进程的输出,调用ctypesAPI (ImageMagick) 打开文件,然后复制它们。

它崩溃了shutil.copyfile,但我很确定这不是它泄漏的地方。

0 投票
2 回答
2341 浏览

c# - 处理 Internet Explorer 网页中的控件

我在 Windows 窗体应用程序中嵌入了 Internet Explorer 浏览器,但无法修改此窗体的源代码。但是,我已经掌握了 IE 窗口的句柄,并且可以执行各种SendInput功能。如果我单击一个控件,我如何判断它是否是TextBox,然后如何向该控件发送字符TextBox

我需要使用我已经为我的其他功能获得的 IE 窗口句柄的答案。我需要的答案必须涉及到 IE 窗口的句柄。