我在看书时看到这样一句话:Windows does not maintain parent-child relationships among processes like Unix does.不幸的是,没有进一步的解释。那么Unix和Windows进程之间的父子关系有什么区别呢?
我正在尝试将方法名称传递给Action委托.这就是我所拥有的:
private static void DoAction(params Action<Group>[] actions)
{
foreach (Action<Group> action in actions)
{
Console.WriteLine(action.Method.Name);
}
}
Run Code Online (Sandbox Code Playgroud)
在主要情况下,这就是它被调用的方式:
DoAction(y => y.DoBar(), z => z.DoFoo());
Run Code Online (Sandbox Code Playgroud)
在执行DoAction()方法之后,我希望在屏幕上看到"DoFoo"和"DoBar",但我看到< Main>b__0和<Main>b__1.我只是想知道是否有办法从动作委托中获取目标方法的实际名称?任何帮助表示赞赏.
我正在尝试根据某些条件获取和过滤Windows日志,其中一个标准是过滤依据Message.该Message物业在EventLog.GetEventLogs().Entries.Message.该问题Entries是EventLogEntryCollection和我不能运行lambda表达式(其中在其上).我也尝试将它转换为IEnumberable(List)类型,但它抛出一个异常并说无法强制转换.另一个问题是它是一个只读属性,这使得创建新EventLog对象并手动添加条目几乎是不可能的.最初我尝试的是:
List<EventLog> filteredList = EventLog.GetEventLogs().Where(
x => string.Equals(x.LogDisplayName, "Some Value")).Where(x => x.Entries.Where(...
Run Code Online (Sandbox Code Playgroud)
但显然Entries.Where()不会起作用,因为它不是IEnumberable.我已经考虑了几个小时的替代解决方案,但现在我没希望了.任何帮助是极大的赞赏.
我在数据库中有一个存储过程,它返回一个XML流,应用程序将该流反序列化为相应的对象.存储过程是这样定义的(我简化了它以使其更具可读性):
SELECT
usrs.FirstName AS 'FirstName',
usrs.LastName AS 'LastName',
usrs.Username AS 'Username',
usrs.DateJoined AS 'DateJoined'
FROM USERS AS usrs
WHERE usrs.Username = @username
FOR XML PATH('UserProfile')
Run Code Online (Sandbox Code Playgroud)
请注意,这Username是一个主键,因此存储过程将只返回一个结果.示例查询结果如下所示:
<UserProfile>
<FirstName>Chuck</FirstName>
<LastName>Norris</LastName>
<Username>chuck.awesome</Username>
<DateJoined>2013-07-22T06:58:00</DateJoined>
</UserProfile>
Run Code Online (Sandbox Code Playgroud)
现在在应用程序中,这是我获取和反序列化数据的方式:
internal static T GetData<T>(StoredProcedures storedProcedure, ParameterList parameters)
{
using (var connection = GetSqlConnection())
{
using (var command = new SqlCommand(storedProcedure.ToString(), connection))
{
command.CommandType = System.Data.CommandType.StoredProcedure;
foreach (var parameter in parameters)
{
command.Parameters.Add(new SqlParameter(parameter.Key.ToString(), parameter.Value));
}
connection.Open();
var data = command.ExecuteScalar();
return DeserializeXml<T>(data.ToString());
}
}
} …Run Code Online (Sandbox Code Playgroud) 我正在努力学习如何使用它fork()来创建新流程并pipes与每个流程进行通信.假设我有一个包含20个单词的列表,我创建了3个进程.现在,我需要使用管道在进程之间分配单词,每个进程将对它接收的单词列表进行排序.我想要实现这个的方式是这样的:
Word1 => Process1
Word2 => Process2
Word3 => Process3
Word4 => Process1
Word5 => Process2
Word6 => Process3
.
.
.
Run Code Online (Sandbox Code Playgroud)
因此每个进程都有一个要排序的单词列表,最后我将使用MergeSort合并每个进程返回的所有排序列表.我不确定如何使用管道与每个流程进行通信(例如,用一个单词提供每个流程).任何帮助我走上正轨的人都将不胜感激.
我有一个WinForms和一个ConsoleApplication项目.我在启动时启动这两个项目,并希望从WinForms应用程序向控制台应用程序写入"实时"信息.控制台应用程序非常简单:
static void Main(string[] args)
{
while (true)
{
// This prevents the console from dying
Console.ReadKey();
}
}
public static void WriteMessage(string message)
{
Console.WriteLine(message);
}
Run Code Online (Sandbox Code Playgroud)
我WriteMessage从WinForms应用程序调用该函数,但这不起作用.我在WriteMessage方法中放了一个断点,它被命中,但没有任何东西放在控制台屏幕上,这让我觉得这是因为while循环main.我甚至尝试将while循环放在不同的线程中,但仍然没有成功.任何帮助,将不胜感激.
我正在研究一个项目并尝试修复系统中发现的错误.我有权访问的代码没有构建(这是一个包含大量dll文件的巨大项目,其中一些在我的工作区中丢失).我可以访问我正在尝试调试的部分代码,但无法构建它.所以我启动了编译后的.exe文件,并在VS中附加到它.当我在代码中设置一个断点时,它已被禁用并说" No symbols have been loaded for this document.所以我的问题是,调试器正在寻找哪些额外的信息/文件?我假设它正在寻找pdb特定组件的文件,这在我的机器上不存在.任何帮助表示赞赏.
编辑:
当我尝试附加到exe文件时,我收到此警告:

我有一个项目,我想检查目录中是否存在文件.
if (File.Exists("\\Galerija\\" + Session["up_ime"] + "\\" + Session["slika_profila"]))
{
Label1.Text = "exist";
}
else {
Label1.Text = "does not exist";
}
Run Code Online (Sandbox Code Playgroud)
该文件的目录是\Galerija\admin\slika.jpg.该文件位于目录中,但我返回它没有.我还打印了我给File.Exists()标签的路径,它应该是正确的.我不明白这是什么问题. - 应该找到该文件.
我正在开发一个使用 plain 实现的项目threads。应用程序中的大多数预期异常都会得到处理,但是,在某些情况下,其中一个线程会引发意外异常,并且应用程序会崩溃(应用程序是基于两者的,I/O因此Client-Server实际上不可能处理所有异常)。
为了解决这个问题,我尝试定义一个全局变量UnhandledExceptionHandler,以便应用程序显示友好的消息而不是崩溃。这是我尝试过的:
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
// The rest of the startup logic goes here
}
void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
Utilities.DisplayUnhandledException((Exception)e.ExceptionObject);
}
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用。从未被CurrentDomain_UnhandledException调用过。不幸的是,我无法更改应用程序的结构,这意味着我无法使用任务并行库。我不明白为什么这不起作用。还有其他方法可以处理线程中抛出的异常吗?任何帮助表示赞赏。
我正在尝试创建两个泛型方法,其中一个是void,另一个是返回类型.void方法接受Action委托,另一个接受Func委托.void方法的实现是这样的:
public static void ExecuteVoid<T>(Action<T> actionToExecute)
{
string endpointUri = ServiceEndpoints.GetServiceEndpoint(typeof(T));
using (ChannelFactory<T> factory = new ChannelFactory<T>(new BasicHttpBinding(), new EndpointAddress(endpointUri)))
{
T proxy = factory.CreateChannel();
actionToExecute(proxy);
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我遇到了非void方法的问题:
public static T ExecuteAndReturn<T>(Func<T> delegateToExecute)
{
string endpointUri = ServiceEndpoints.GetServiceEndpoint(typeof(T));
T valueToReturn;
using (ChannelFactory<T> factory = new ChannelFactory<T>(new BasicHttpBinding(), new EndpointAddress(endpointUri)))
{
T proxy = factory.CreateChannel();
valueToReturn = delegateToExecute();
}
return valueToReturn;
}
Run Code Online (Sandbox Code Playgroud)
现在当我尝试调用这样的方法时:
var result = ServiceFactory.ExecuteAndReturn((IMyService x) => x.Foo());
Run Code Online (Sandbox Code Playgroud)
我得到这个编译错误:
The type arguments for method …Run Code Online (Sandbox Code Playgroud)