虽然我可以这样做:
System.Diagnostics.Process.Start(@"C:\MyFolder\MyProgram.cmd");
Run Code Online (Sandbox Code Playgroud)
我不能这样做:
var process = new System.Diagnostics.Process();
process.Start(@"C:\MyFolder\MyProgram.cmd");
Run Code Online (Sandbox Code Playgroud)
错误:无法使用实例引用访问成员“System.Diagnostics.Process.Start(string)”;用类型名称来限定它。
这背后的原因是什么?谁能解释一下?
提前致谢!
.xlsx我正在尝试在 WPF .NET Core 3.1 应用程序中打开 Excel 文件 ( )。使用 Winforms,我能够做到
process.start("Resources/test.xlsx")
Run Code Online (Sandbox Code Playgroud)
文件将会打开。
在 WPF 应用程序中执行相同的操作会导致错误
指定的可执行文件不是该操作系统平台的有效应用程序
我使用相同的代码并使用两个应用程序打开相同的文件。只有 Winforms 应用程序可以工作,WPF 会抛出该错误。
.Net 3 中是否有一种新的打开文件方式System.Diagnostics.Process.Start?
我正在使用C#应用程序来启动java Web应用程序.我希望我的C#应用程序知道用户什么时候关闭java应用程序.我正在使用此代码:
var javaws = File.Exists(@"C:\Program Files\Java\jre6\bin\javaws.exe") ? @"C:\Program Files\Java\jre6\bin\javaws.exe" : @"C:\Program Files (x86)\Java\jre6\bin\javaws.exe";
var psi = new ProcessStartInfo(javaws, String.Format("http://{0}:/appstart.jnlp", hostAddress));
Process.Start(psi).WaitForExit();
Run Code Online (Sandbox Code Playgroud)
这段代码成功启动了java程序,然后WaitForExit()被调用并立即返回.我相信这是因为"javaws"只是启动另一个名为"javaw"的进程,然后"javaws"关闭.有没有办法A)等待所有子进程也完成,或者B)等待特定的子进程?
-
我发现了这个相关的帖子:javaws退出代码真的坏了吗?虽然答案表明1.6.0_23修复了它,但我在Java 1.6.0_23的开发机器上看到完全相同的行为.我现在正在寻找的是一种解决方法,使上述代码按预期工作.我需要启动这个jnlp文件,等待它的执行完成,然后在C#程序中做一些额外的代码.Java应用程序不受我的控制,所以我无法在那里添加功能.
-
对于任何想知道的人,最终解决方案看起来像这样:
var javaws = File.Exists(@"C:\Program Files\Java\jre6\bin\javaws.exe") ? @"C:\Program Files\Java\jre6\bin\javaws.exe" : @"C:\Program Files (x86)\Java\jre6\bin\javaws.exe";
var psi = new ProcessStartInfo(javaws, String.Format("http://{0}:/appstart.jnlp", hostAddress));
Process.Start(psi).WaitForExit();
var javaw = Process.GetProcessesByName("javaw");
javaw.Single(ja => ja.StartTime.Equals(javaw.Max(j => j.StartTime))).WaitForExit();
Run Code Online (Sandbox Code Playgroud)
如果javaw在计算机上运行其他Java Web应用程序,则仅提供等待最近启动的进程的额外好处.
我有一个应用程序,几乎在它使用的每个方法中都使用Trace.WriteLine.该计划有几个不同的问题.
我想知道的是,如果经常使用System.Diagnostics.Trace.WriteLine有任何开销吗?我正在寻找解决问题的方法,因为我发现它们并且我个人觉得在程序中几乎每一种方法都使用Debug/Trace WriteLine会带来性能成本.
编写此应用程序的程序员很匆忙,还包括一些过去给我们带来麻烦的资产陈述.
我正在编写一个应用程序,我必须使用System.Diagnostics命名空间使用Process.Start api.我正在使用具有mono-2.10的月光库.但是我收到了这个错误
"无法找到类型或命名空间名称`Process'.您是否缺少using指令或程序集引用?"
我想知道是在月光构建中mscorlib.dll程序集中缺少System.Diagnostics命名空间吗?
这个问题"如何在C#中获得CPU使用率?" 显示了在.NET中获取计算机当前CPU使用率(%)的一些方法.
由于CPU使用率频繁波动,我认为当前的CPU使用率通常不是计算机繁忙程度的良好指标(例如,用于调度或负载平衡目的).有没有一种有效的方法来获得最后x分钟的平均CPU使用率,例如最后5分钟?
我正在考虑可以由负载平衡或调度模块调用的方法GetAverageCpuUsage(int period).
I got method in console app .net 4.6:
using System.Diagnostics;
public static void CPUMonitorTest()
{
var cpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");
...
}
Run Code Online (Sandbox Code Playgroud)
When try to do it into class library .NET Core 2.0 I got problem:
What can I do now?
使用System.Diagnostics进行跟踪.虽然我已经使用过log4net和其他日志记录解决方案,但我只对跟踪工作感兴趣System.Diagnostics.
即使我发出的TraceEvent文件没有在任何地方创建.
我有一个托管一些WF服务的应用程序.其中一个服务是状态机,其初始状态如下所示:

在LogMessage自定义活动也非常直截了当.它接收四个基本参数:

将TraceSource变量定义为:

然后简单地调用TraceEvent:

这种情况的结构TraceSource和TraceListener如下:
<system.diagnostics>
<trace autoflush="true"/>
<sources>
<source name="log" switchValue="All">
<listeners>
<add name="file" type="Microsoft.VisualBasic.Logging.FileLogTraceListener, Microsoft.VisualBasic, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
BaseFileName="gsf_workflows.txt"
DiskSpaceExhaustedBehavior="ThrowException"
Location="Custom"
CustomLocation="D:\Log"
MaxFileSize="81920000"
LogFileCreationSchedule="LogFileCreationScheduleOption.Daily"/>
</listeners>
</source>
</sources>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud) Trace.AutoFlush = true;
Trace.TraceInformation(string.Format("Try starting: {0}", System.Reflection.Assembly.GetExecutingAssembly().GetName()));
Trace.Flush();
Run Code Online (Sandbox Code Playgroud)
我已阅读:如何检查应用程序事件日志中的错误
但是我找不到任何痕迹!我究竟做错了什么?