草庐IT

windows - 为什么有些程序在使用调试器时可以运行,但在运行正常的调试执行时却不行?

我有好几次使用VisualStudio和其他东西编写程序时,在换行符的某处。自然地,我的第一个想法是在程序的早期设置一个断点,然后逐行缓慢地逐步执行代码,直到遇到错误。但很多时候我发现在调试器中缓慢地逐步执行代码时一切正常。但是,当我尝试在没有断点的情况下运行程序时,出现了问题。为什么会这样?逐行单步执行代码实际上与仅在dubug模式下运行程序不同吗?(我不是在谈论调试与发布,我在谈论调试与逐行调试) 最佳答案 一个原因可能是您在多个执行线程之间存在计时问题,当程序“全速”运行时和您在调试器中暂停线程时,这些问题会以不同方式发生。

windows - 我正在从后台服务运行 powershell 脚本,为什么有些命令不能像这样工作?

我有一个C#后台服务。此服务轮询网络服务以获取更新。如果web服务返回更新,C#服务运行powershell脚本并传递更新所在的url。此powershell脚本然后获取url、下载更新(一个简单的.zip文件)、提取更新的内容,并运行另一个始终随更新一起提供的powershell脚本。这一切都完美无缺,但某些powershell命令在以这种方式执行时不会执行任何操作。例如,我创建了一个带有jpg图像的更新,并让更新附带的powershell脚本将该图像设置为桌面背景。如果我手动执行此更新,它会起作用并设置新背景。但是,如果我让C#服务调用powershell脚本,它不会设置背景,即使

windows - 在 Windows 中,为什么有些字符是非法的?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion正如我们大多数人所知,Windows禁止在文件名中使用以下字符:*。"/\[]:;|=,Linux和其他基于Unix的系统仅出于显而易见的原因禁止\0(空字符)和/(路径分隔符)。为什么Windows有这么多禁用字符?我看过了,我发现的每个答案都是“这有效吗”或“什么有效”的变体,没有讨论导致Windows(DOS?)团队将其定为非法的设计决策。

windows - 为什么有些控件没有窗口句柄?

我想获得一些控件的窗口句柄来用它做一些事情(需要一个句柄)。控件位于不同的应用程序中。奇怪的是;我发现许多控件没有窗口句柄,例如Windows资源管理器中工具栏(?)中的按钮。只需尝试获取文件夹/搜索/(等)按钮的句柄。它只给了我0。所以..第一个问题:为什么有些控件没有窗口句柄?在他们心里,不都是控制着window吗?(只是谈论标准控件,就像我在Windows资源管理器中期望的那样,没有在Pane等上自定义绘制。)这引出了我的第二个问题:如果您无法获取它们的句柄,如何使用它们(例如使用EnableWindow)?非常感谢您的任何意见!编辑(附加信息):Windows资源管理器只是一个

windows - 为什么有些窗口收不到 Windows 消息

在VisualStudio上使用Spy++工具,我可以看到像桌面或资源管理器(文件资源管理器)之类的窗口收到WM_消息,但像Firefox或VisualStudio这样的窗口不接收消息。为什么有些人能收到消息而有些人没有。(对于WM_消息,我指的是WM_MOUSELEAVE或WM_SETCURSOR) 最佳答案 Spy++需要注入(inject)一个钩子(Hook)来监Windows口消息。为此,钩子(Hook)函数的位数需要与拥有窗口的进程的位数相匹配,因此您应该使用32位版本的Spy++来监视32位应用程序的窗口,以及64位版本

c# - 为什么有些类型没有文字修饰符

例如,为什么longint有文字修饰符,而shortint没有?我指的是本网站上的以下问题:C#compilernumberliterals总的来说,C#似乎是一种设计良好且一致的语言。可能有充分的理由为某些类型提供文字修饰符,但不是所有类型。它是什么? 最佳答案 Whylonginthasaliteralmodifier,butshortintdoesnot?问题是“为什么C#没有这个功能?”这个问题的答案总是一样的。默认情况下未实现功能;C#没有该功能,因为没有人设计、实现并将该功能交付给客户。没有特征不需要理由。相反,所有功能

c# - 为什么有些方法对可空结构的空值起作用而有些方法不起作用?

开门见山:int?i=null;i.ToString();//happyi.GetType();//nothappy我得到一个veryrelatedquestion这实际上是关于为什么i.ToString()工作正常。编辑:刚发现这个极端情况是themostvotedoneinthisSOthread! 最佳答案 是因为ToString是虚拟的,而GetType不是。Nullable在CLR中具有特殊的装箱行为。当您调用GetType在可为空的情况下,它被装箱(请参阅MSDN,实际上任何struct都会发生这种情况)。但是,对于可空

c# - 为什么有些对象不能从不同的线程访问?

我在用C#开发时遇到过这个问题好几次。我会愉快地编码,在线程之间来回传递对象等等,然后突然间我得到了这个熟悉的错误:"Thecallingthreadcannotaccessthisobjectbecauseadifferentthreadownsit."好吧,我以前处理过它,尤其是GUI线程上的对象。您只需编写一些额外的代码来围绕该特定问题进行编程。但是我偶尔会遇到一个对象,它无论如何都是普通的,但它不喜欢被不同的线程访问。编辑我在原来的帖子中弄错了导致访问异常的对象。这不是IPAddress,而不是它的System.Printing.PrintQueue.我用它来获取IP地址。这是

javascript - 为什么有些人认为 JavaScript 不好?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion为什么允许在浏览器中禁用JavaScript?(即为什么它被认为是坏的?)

javascript - 为什么有些数组方法依赖于全局 Array 对象?

我正在浏览MDNdocsonarrays当我们想测试一个对象是否是一个数组时,我们使用isArray()。但是,它的用法与大多数其他方法有很大不同。当您使用常规语法时,会弹出一个错误:console.log([1,2,3].isArray());//TypeError:[1,2,3].isArrayisnotafunction虽然这确实有效:console.log(Array.isArray([1,2,3]))我不明白为什么isArray()(以及其他一些方法)依赖于某些全局对象,而不是仅仅通过相关对象进行访问。为什么有些方法需要全局数组对象? 最佳答案