当我们的应用程序以编程方式启动时(通过MSI安装程序中的自定义操作或在启动新实例时)在Windows Vista中启动(也发生在Windows 7 Beta中),它不会出现在任务栏中而且没有集中注意力.对其进行Alt-tabbing将使其正确显示在任务栏中并保持在那里.
是什么导致这个?我之前也在其他一些应用程序中看过这个,但不知道为什么.Out app是.NET WinForms应用程序.永远不要在XP中看到这种情况,只有Vista和7
编辑:好吧,似乎唯一一次这种可重复发生的时候是由安装程序运行的时候,我相信还有其他时候会发生,但我可能只是疯了.发布代码有点复杂,因为我们处理各种命令行启动参数,并在实际启动主应用程序之前启动登录表单等.
有没有人不得不在此之前处理这个场景并进行解决?
在这种情况下,许可证的问题是Apache License v2,但基本上如果我只是在应用程序目录中包含带有许可证的文本文件,则可能看起来我的应用程序是根据该许可证获得许可的情况并非如此.
您是否只是在许可证顶部添加一个小注释,以表明[库名称]是否在此许可下?我如何参考图书馆?通过网站或主机的网址?
我没有发现任何欺骗,但如果存在,可以随意关闭与欺骗的链接.
这个过程被提升了,我确保VS调试器中的路径是正确的(我使用的是Environment.GetFolderPath(Environment.SpecialFolder.System)而不是硬编码)但File.Exists仍然返回false.
我需要这个的原因是确保安装某些第三方驱动程序的解决方法,因为他们的注册表设置在卸载时不会被删除.
我知道写入是通过虚拟化重定向的,但这对于检查文件的存在也是如此吗?
因为HKey_Class_Root\CLSID我发现相当于HKey_Current_User\Software\Classes\CLSID但是在注册表中我没有在同一位置看到"Record".
现在我们只是使用这样的东西
stopWatch.Start();
try
{
method();
}
finally
{
stopWatch.Stop();
}
Run Code Online (Sandbox Code Playgroud)
哪种方法适用于同步方法,但有些方法是异步执行的,因此在执行多个线程时时间会有所偏差.是否有相当于System.Diagnostics.Stopwatch,它只会测量当前线程的时间花费?
我们希望在我们的内部beta(alpha?)版本中长时间收集数据,并且在分析器的全时运行不是一个可行的选择.
编辑:为了澄清,我们只想测量执行method()所花费的时间,所以如果Method1()和Method2()都同时启动而Method1在2秒标记处完成而Method2在4秒标记处完成,我想要一些能告诉我Method1花费大约1秒执行而Method2花费大约3秒执行的东西(假设在前2秒内他们平均共享(假设单核)处理器.
长的Exec正在安装.NET 3.5,并且脚本基于这个:http: //www.blackhillsoftware.com/blog/2006/06/26/using-innosetup-with-the-dotnet-framework/
问题是它使用"ewWaitUntilTerminated"因为我们需要捕获退出代码.由于我们正在运行它/ passive/norestart,因此它对用户的影响较小(也许我们不应该?),这会让情况变得更糟.
我能想到的最简单的选择是在安装.NET时隐藏窗口并在完成后再次显示它,但我不知道该怎么做.
理想的解决方案是显示一个进度页面,但它似乎不可能,因为我们需要立即返回,但在进程退出并捕获退出代码时仍然会以某种方式通知,否则我们会只是有一个永恒的进步吧.
关于如何解决这个问题的任何想法?
编辑:最小化可能会更好,但不知道如何做到这一点.我们会显示一条消息,通知用户该过程可能需要10-20分钟,但问题是主设置表单已完全冻结,无法移动,最小化或对其执行任何操作.同样运行/被动.NET安装程序实际上并没有在较慢的机器上显示任何一两分钟的进度.
我知道在perfmon中你可以看到每个核心的使用量,以及特定进程使用的CPU总量.但是我似乎无法找到一种方法来查看进程使用内核分解的CPU数量.
是否有内置的方式来查看此信息?是否有程序化的方式来看到这个?(C#首选)我是否通过提出这个问题来展示对Windows(Vista)如何处理核心使用和上下文切换的误解?
编辑:更清楚我要找到的内容.我的进程是否仅使用30-40%的总CPU(在四核上),因为它没有足够多线程来利用更多,或者是因为它太I/O限制和磁盘访问是瓶颈?
所以根本没办法做到这一点吗?(除了确保计算机上没有其他CPU活动)
我无法弄清楚如何在我的模型中添加一堆UI特定的东西,如INotifyProperyChanged和INotifyCollectionChanged,或者创建大量不同的事件并做一些感觉的事情,让视图模型得到模型更改的通知就像他们是UI特定的,应该远离模型.
否则,我只需要复制视图模型中的所有业务逻辑,以确保一切都是最新的,那么拥有模型的重点是什么呢?
我在模型中遇到的一个棘手的问题是"类别"类的属性.您可以将其视为树结构,属性是所有叶节点后代.在模型中,属性是通过递归方式生成所有它的子项,这一切都很好.但是视图模型需要绑定到该属性,并且需要知道它何时发生更改.我应该更改模型以适应视图模型吗?如果我这样做,那么视图模型此时并没有真正做任何事情,模型会引发所有必要的更改通知,视图可以直接绑定到模型.此外,如果模型是我没有源的东西,我将如何解决这个问题?
我认为使用与接口相同的命名空间中的扩展方法,您可以获得与多继承类似的效果,因为您不需要在10个不同的类中以相同的方式实现相同的接口的重复代码.
这样做的一些缺点是什么?我认为专业人士非常明显,这是后来通常会再次咬你的缺点.
我看到的一个缺点是扩展方法不能是虚拟的,因此您需要确保实际上确实希望它们以相同的方式实现每个实例.
假设我有下表(其中History是xml列):
Id Value History
1 "Hello" <History>
<Node date="1-1-2011">World</Node>
<Node date="1-2-2011">Foo</Node>
<Node date="1-3-2011">Bar</Node>
</History>
2 "Baz" <History>
<Node date="1-1-2011">Buzz</Node>
<Node date="1-2-2011">Fizz</Node>
<Node date="1-3-2011">Beam</Node>
</History>
Run Code Online (Sandbox Code Playgroud)
从那以后我想选择一个新表,如:
HistoryId Id Value Date
1 1 "World" 1-1-2011
2 1 "Foo" 1-2-2011
3 1 "Bar" 1-3-2011
4 2 "Buzz" 1-1-2011
5 2 "Fizz" 1-2-2011
6 2 "Beam" 1-3-2011
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
如果它只是一个独立的xml值,我可以这样做:
DECLARE @xml2 XML = '
<History>
<Node date="1-1-2011">World</Node>
<Node date="1-2-2011">Foo</Node>
<Node date="1-3-2011">Bar</Node>
</History>'
SELECT
x.value('(@date)[1]','date') AS [Date]
,x.value('.', 'nvarchar(50)') AS Value
FROM @xml2.nodes('/History/Node') temp(x)
Run Code Online (Sandbox Code Playgroud)
但是当XML数据是表列的一部分时,我不确定如何做到这一点.我可能想办法用一种方法来强制执行它, …