小编Rom*_*kov的帖子

忽略DataContractSerializer中的字段顺序

反序列化时,DataContractSerializer不仅要求元素名称匹配,还要求它与其他元素的顺序相同.

我的应用程序是这样的,每个字段都可以通过其名称唯一标识.因此,我希望XML文件可以按任何顺序包含元素,并且反序列化器仍然可以工作.

是否可以像这样设置DataContract?

数据成员订单中的介绍性段落建议可选择强制执行订单,但我还没有找到实际使其可选的方法.

后续问题:使用DataContractSerializer进行简单的数据文件版本控制

.net datacontractserializer

27
推荐指数
1
解决办法
6063
查看次数

如何修复WPF表单调整大小 - 控制滞后和黑色背景?

我有一个非常简单的WPF窗口 - 它唯一的东西是右对齐按钮.当我通过拖动左边界来调整窗口大小时,按钮会跳转 - 很多.自己尝试一下,来回拖动左边界.

此外,在调整大小期间,黑色背景会暂时暴露.

这个问题中,我问了一个关于Windows Forms的类似问题.我得到的唯一答案表明这在WPF中得到了修复,然而,令人惊讶的是,它不仅没有修复,而且WPF还增加了第二个视觉错误 - 临时黑色背景.

这是控制滞后的样子; 当我通过顶部边框调整窗口大小时会发生这种情况(使用相机录制,因为屏幕上限会使一切变慢,因此不太明显):

                                                  在此输入图像描述

黑色边框的示例:在调整窗口大小时捕获此内容; 这只是一瞬间,但它非常引人注目:

                                      在此输入图像描述

难道我做错了什么?在调整大小期间,如何让我的控件在一个地方保持可视化?我怎样才能避开黑色边框?

:该按钮在正确的位置结束了最后 -它只跳周围简要地调整大小时.

wpf

24
推荐指数
1
解决办法
6393
查看次数

在Visual Studio的Watch窗口中展平继承的成员?

有没有办法让Watch窗口在一个长平面列表中显示所有继承的属性和字段,而不是隐藏在嵌套的"基"节点后面?

我正在调试一些大量使用继承的C#代码 - 我想看的一些属性在Watch窗口中有三个级别的"base".如果我只想检查一个这样的对象,这或多或少可以忍受,但我实际上正在看它们的一棵树......

debugging visual-studio-2008 visual-studio

23
推荐指数
1
解决办法
2360
查看次数

测试SMTP服务器正在通过C#运行

如何在不发送消息的情况下通过C#测试SMTP是否正常运行.

我当然可以尝试:

try{
// send email to "nonsense@example.com"
}
catch
{
// log "smtp is down"
}
Run Code Online (Sandbox Code Playgroud)

必须有一个更整洁的方法来做到这一点.

c# smtp

22
推荐指数
2
解决办法
3万
查看次数

Mercurial`hg clone`但忽略了所有subrepos?

有没有办法克隆subrepos附带的repo,但没有Mercurial拉出所有subrepos?

似乎虽然hg clone -U可以用来获得一个repo的空克隆,但是没有任何东西可以说服hg update避免通过拉动所有的subrepos来开始.

我应该指出,在创建这样的克隆之后,保留轻松同步到头版本的能力至关重要.

mercurial

22
推荐指数
3
解决办法
5710
查看次数

从另一个进程获取win32线程的StartAddress

背景:

我在Win32中编写了一个多线程应用程序,我使用Process来自System.Diagnostics命名空间的类从C#代码开始.

现在,在C#代码中,我想获取在Win32应用程序中创建的每个线程的起始地址的名称/符号,以便我可以将与线程相关的信息(例如CPU使用情况)记录到数据库中.基本上,C#代码启动Win32应用程序的多个实例,监视它们,如果需要则终止,然后将info/error/exceptions/reason/etc记录到数据库.

为此,我已经包装了两个Win32 API viz.SymInitialize以及SymFromAddr我自己编写的程序友好API,如下所示:

extern "C"
{
    //wraps SymInitialize
    DllExport bool initialize_handler(HANDLE hModue);

    //wraps SymFromAddr
    DllExport bool get_function_symbol(HANDLE hModule, //in
                                       void *address,  //in
                                       char *name);    //out
}
Run Code Online (Sandbox Code Playgroud)

然后使用pinvoke从C#代码调用这些API.但它不起作用,并GetLastError提供126 错误代码,这意味着:

指定的模块无法找到

我传递Process.HandlehModule这两个函数; initialize_handler似乎工作,但get_function_symbol没有; 它给出了上述错误.我不确定我是否通过了正确的手柄.我尝试传递以下句柄:

Process.MainWindowHandle
Process.MainModule.BaseAddress
Run Code Online (Sandbox Code Playgroud)

两者都在第一步失败(即调用时initialize_handler).我Process.Threads[i].StartAddress作为第二个参数传递,这似乎是失败的原因,ProcessThread.StartAddress似乎是RtlUserThreadStart函数的地址,而不是特定于应用程序的启动函数的地址.在MSDN说一下吧:

每个Windows线程实际上都是在系统提供的函数中开始执行,而不是应用程序提供的函数.因此,主线程的起始地址与系统中的每个Windows进程相同(因为它表示系统提供的函数的地址).但是,StartAddress属性允许您获取特定于应用程序的起始函数地址.

但它没有说明如何使用ProcessThread.StartAddress获取特定于应用程序的startinbg函数地址.

题:

我的问题是从另一个应用程序(用C#编写)获取win32线程的起始地址,因为一旦我得到它,我将使用上面提到的API得到名称.那么如何获得起始地址?


我从C++代码测试了我的符号查找API.如果给出正确的地址,它可以很好地将地址解析为符号.

这是我的p/invoke声明:

[DllImport("UnmanagedSymbols.dll", SetLastError = true, …
Run Code Online (Sandbox Code Playgroud)

c# c++ dll pinvoke process

22
推荐指数
1
解决办法
6614
查看次数

如何取消将 `fastlane_tmp_keychain-db` 设置为默认钥匙串?

我不完全确定我是如何进入这种情况的,但fastlane_tmp_keychain-db在构建后成为我的默认钥匙串,并且我不知道如何取消设置它。

在此输入图像描述

在此输入图像描述

这里没有任何选项可以更改默认值。为什么 fastlane 会这样做以及如何撤消它?

这绝对是默认的;我在登录时收到“Spotlight 想使用 fastlane_tmp_keychain-db”。

fastlane fastlane-match

20
推荐指数
3
解决办法
4708
查看次数

MySQL/InnoDB是否实现了真正的可序列化隔离?

MySQL文档中不完全清楚InnoDB引擎是否实现了真正的可序列化隔离1快照隔离,这通常也被混淆地称为"可序列化".哪一个?

如果MySQL InnoDB没有,那么有没有完全免费的,生产质量的RDBMS呢?

1其中"真正的可序列化隔离"意味着不仅缺少根据SQL标准的读取异常,而且还存在写入偏斜异常,这里将进一步详细解释.

rdbms transactions acid transaction-isolation

18
推荐指数
2
解决办法
6424
查看次数

如何防止Windows窗体TextBox在调整大小时闪烁?

有很多文章解决Windows窗体中的闪烁问题.大多数人建议设置DoubleBuffered = true或设置一堆ControlStyle标志.但是,这些都不能帮助减少TextBox闪烁.

以下是一些相关问题:

要重现该问题,请创建一个新的WinForms项目,添加一个TextBox,启用多行,禁用自动换行,添加一堆文本,设置Anchor为Left + Right + Top + Bottom.现在运行并调整大小.文字闪烁.对于几个嵌套TableLayoutPanels中的文本框,调整大小时的闪烁更糟.

应用上述问题中提出的解决方案最好不要修复闪烁; 如果我得到实验并设置受保护ControlStyle,TextBox我可以完全打破它(通过启用UserPaint),但不能消除闪烁.

那么,有没有办法解决TextBox中文本的闪烁问题?

.net flicker winforms

17
推荐指数
2
解决办法
1万
查看次数

包含"任何CPU"和"x86"项目的Visual Studio 2010解决方案的建议

通常情况下,单个C#解决方案包含一些特定于x86的项目(通常具有本机依赖性),而其他项目则是"任何CPU".

直到最近,我总是进入配置管理器并确保解决方案平台是"任何CPU".这不是一个问题; 它需要像这里提到的那样偶尔进行调整,但总体来说还不错.

但是,我最近开始怀疑这些努力是否被误导了.我明显反对Visual Studio 2010(以及以前的Visual Studio 2008)设计来处理这个问题的方式."混合平台"实际上是一个准确的描述,虽然它最初感觉有什么不对劲,但进一步认为我必须得出结论,它不比"任何CPU"更错.

所以,最近我一直试图在这种情况下选择保持"混合平台"或更改为"x86"作为我的解决方案平台.后者反映了意图:最终的EXE文件是x86,并在64位操作系统上以32位模式运行.然而,前者是Visual Studio 真正想要的.

根据您的经验,在这种情况下,是否有一个特定的解决方案平台比其他平台更适合?

注1:在我遇到的每种情况下,'x86'都被本机依赖所证明,并且'任何CPU'都是合理的,因为它是一个真正独立于平台的外部库.

注2:如果我理解正确,解决方案平台没有太大的区别; 这只是一个名字.在添加新项目时,它似乎更改了默认的"to-build-or-to-to-build"复选框状态,但这是它唯一的影响.对?

c# visual-studio-2010 visual-studio

17
推荐指数
1
解决办法
5367
查看次数