小编Ari*_*edi的帖子

Windows 中的父子关系

我在看书时看到这样一句话:Windows does not maintain parent-child relationships among processes like Unix does.不幸的是,没有进一步的解释。那么Unix和Windows进程之间的父子关系有什么区别呢?

unix windows parent-child

4
推荐指数
1
解决办法
1558
查看次数

从Action委托获取方法名称

我正在尝试将方法名称传递给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.我只是想知道是否有办法从动作委托中获取目标方法的实际名称?任何帮助表示赞赏.

c# delegates methodinfo

4
推荐指数
1
解决办法
2308
查看次数

使用非IEnumerable类型上的lambda表达式过滤Windows日志

我正在尝试根据某些条件获取和过滤Windows日志,其中一个标准是过滤依据Message.该Message物业在EventLog.GetEventLogs().Entries.Message.该问题EntriesEventLogEntryCollection和我不能运行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.我已经考虑了几个小时的替代解决方案,但现在我没希望了.任何帮助是极大的赞赏.

c# linq event-log

4
推荐指数
1
解决办法
2268
查看次数

XML序列化程序在对象反序列化时返回null

我在数据库中有一个存储过程,它返回一个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)

c# xml-deserialization xmlserializer

4
推荐指数
1
解决办法
9438
查看次数

C中的多处理和管道

我正在努力学习如何使用它fork()来创建新流程并pipes与每个流程进行通信.假设我有一个包含20个单词的列表,我创建了3个进程.现在,我需要使用管道在进程之间分配单词,每个进程将对它接收的单词列表进行排序.我想要实现这个的方式是这样的:

Word1 => Process1
Word2 => Process2
Word3 => Process3
Word4 => Process1
Word5 => Process2
Word6 => Process3
.
.
.
Run Code Online (Sandbox Code Playgroud)

因此每个进程都有一个要排序的单词列表,最后我将使用MergeSort合并每个进程返回的所有排序列表.我不确定如何使用管道与每个流程进行通信(例如,用一个单词提供每个流程).任何帮助我走上正轨的人都将不胜感激.

c fork pipe

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

从C#中的其他项目写入ConsoleApplication项目

我有一个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循环放在不同的线程中,但仍然没有成功.任何帮助,将不胜感激.

c# console console-application

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

如何附加到进程并调试不构建的代码?

我正在研究一个项目并尝试修复系统中发现的错误.我有权访问的代码没有构建(这是一个包含大量dll文件的巨大项目,其中一些在我的工作区中丢失).我可以访问我正在尝试调试的部分代码,但无法构建它.所以我启动了编译后的.exe文件,并在VS中附加到它.当我在代码中设置一个断点时,它已被禁用并说" No symbols have been loaded for this document.所以我的问题是,调试器正在寻找哪些额外的信息/文件?我假设它正在寻找pdb特定组件的文件,这在我的机器上不存在.任何帮助表示赞赏.

编辑:

当我尝试附加到exe文件时,我收到此警告:

在此输入图像描述

c# debugging attach-to-process

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

Asp.net c# - 检查文件是否存在失败

我有一个项目,我想检查目录中是否存在文件.

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()标签的路径,它应该是正确的.我不明白这是什么问题. - 应该找到该文件.

.net c# file-io

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

线程中抛出的未处理的异常不会被捕获

我正在开发一个使用 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调用过。不幸的是,我无法更改应用程序的结构,这意味着我无法使用任务并行库。我不明白为什么这不起作用。还有其他方法可以处理线程中抛出的异常吗?任何帮助表示赞赏。

c# wpf unhandled-exception

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

具有委托参数的通用方法

我正在尝试创建两个泛型方法,其中一个是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)

c# generics delegates

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