我正在自动执行一些分析任务,并希望实时记录堆空间和生成大小.该分析API似乎是什么,我需要非常复杂的,它似乎偷听个人分配和收藏,这对我来说并不那么重要.分析工具当然是一个很好的帮助,但我一直在寻找一个更灵活,可编程的界面.
我正在创建Button的子类,并希望为其某些事件(如OnClick)添加自定义功能.这是更理想的方式吗?我是否覆盖OnClick:
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
doStuff();
}
Run Code Online (Sandbox Code Playgroud)
或者我应该通过设计器将OnClick事件链接到我的Button子类中定义的事件处理程序?
class ButtonSubclass
{
public ButtonSubclass() : base()
{
InitializeComponent();
}
private void InitializeComponent()
{
this.Click += new System.EventHandler(this.ButtonSubclass_Click);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我添加了一些小的视觉更改(可能会作为基本的皮肤传递),但大多数更改都在事件处理程序中,我不想在每个重用它的表单上重新实现(复制粘贴).
我正在为Windows窗体应用程序创建单元测试.我的一个方法是表单的事件处理程序(我不知道这是否是我的问题的来源):
private void ImportButton_Click(object sender, System.EventArgs e)
{
// blah blah
}
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试通过右键单击源 - >"创建单元测试"来创建此方法的单元测试时,一切似乎都正常工作,直到我打开生成的单元测试代码:
/// <summary>
///A test for ImportButton_Click
///</summary>
[TestMethod()]
[DeploymentItem("FooBar.exe")]
public void ImportButton_ClickTest()
{
// Creation of the private accessor for 'Microsoft.VisualStudio.TestTools.TypesAndSymbols.Assembly' failed
Assert.Inconclusive("Creation of the private accessor for \'Microsoft.VisualStudio.TestTools.TypesAndSy" +
"mbols.Assembly\' failed");
}
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这一问题?我发现这个MSDN论坛帖子详细说明了一个我认为不适用于我的问题的类似问题.
可能与此问题相反:即使进程正在运行,Process.HasExited也会返回true?
我在一个进程上调用了Kill(),它似乎已经退出了.但是当我测试HasExited时,我得到了错误:
myProcess.Kill();
while ( !myProcess.HasExited )
{
Thread.Sleep(1000);
}
Run Code Online (Sandbox Code Playgroud)
这将持续无限期.当然,我必须更改此代码以最终停止等待,但我很好奇为什么HasExited仍然返回false,因为这个过程似乎从地图上掉了下来.
有没有办法使用MaskedTextBox而不显示PromptChar?我想指定一个掩码来验证输入,但我不希望任何提示字符在编辑模式下占用空间.
原因是当我想接受有限字符集的自由文本时,所有字符都是可选的字母数字.我遇到的问题是,当我选择所有文本时,甚至会选择提示字符.
将PromptChar设置为("")不起作用.将它设置为零宽度空间(\ u200B)似乎有效,但是当掩码达到一定长度时会发生奇怪的事情(13个字符似乎是幻数).或者最好是自己滚动?
我为这篇长篇文章提前道歉...
当我们在VS菜单>工具>选项> VC++目录>包含和包含文件的目录下列出STLPort包含和库目录时,我曾经能够构建我们的VC++解决方案(我们在VS 2008上).但是,我们希望转换到完全依赖.vcproj和.sln文件的构建过程.与VS选项不同,这些可以检查到源控制中,VS选项必须分别在每台开发PC上配置.我们通过将Include目录添加到每个项目的属性页>配置属性> C/C++>常规>其他包含目录和库目录到链接器>常规>其他库目录来处理大多数库的转换.
不幸的是,这种方法不适用于STLPort.我们在链接期间收到LNK2019和LNK2001错误:
Error 1 error LNK2019: unresolved external symbol "public: virtual bool __thiscall MyClass::myFunction(class stlp_std::basic_istream<char,class stlp_std::char_traits<char> > &,class MyOtherClass &,class stlp_std::basic_string<char,class stlp_std::char_traits<char>,class stlp_std::allocator<char> > &)const " (?myFunction@MyClass@@UBE_NAAV?$basic_istream@DV?$char_traits@D@stlp_std@@@stlp_std@@AAVSbprobScenarioData@@AAV?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@3@@Z) referenced in function _main MyLibrary.obj
Error 5 error LNK2001: unresolved external symbol "public: static void __cdecl MyClass::myFunction(class stlp_std::basic_string<char,class stlp_std::char_traits<char>,class stlp_std::allocator<char> > const &,class stlp_std::basic_string<char,class stlp_std::char_traits<char>,class stlp_std::allocator<char> > const &,class stlp_std::basic_string<char,class stlp_std::char_traits<char>,class stlp_std::allocator<char> > const &,class stlp_std::basic_string<char,class stlp_std::char_traits<char>,class stlp_std::allocator<char> > const &,long,enum MyClass::MessageType,int,class stlp_std::basic_string<char,class stlp_std::char_traits<char>,class stlp_std::allocator<char> > const &)" (?myFunction@MyClass@@SAXABV?$basic_string@DV?$char_traits@D@stlp_std@@V?$allocator@D@2@@stlp_std@@000JW4MessageType@1@H0@Z) …
Run Code Online (Sandbox Code Playgroud) 无论解决方案目标模式如何,如何将单个C#项目设置为始终以Release或Debug模式构建?
c# ×5
.net ×4
winforms ×3
c++ ×1
clr ×1
linker ×1
process ×1
stlport ×1
unit-testing ×1
visual-c++ ×1