小编Ash*_*son的帖子

创建IEnumerable <T>或ICollection <T>的最简单,最紧凑的方法是什么?

因此,很多时候我们有一个接受IEnumerable或ICollection作为参数的函数.如果我们有单个项目,但没有集合来保存它们,我们必须在将它们传递给函数之前创建一个集合,如:

T o1, o2, o3;
Foo(new T[] { o1, o2, o3 });
Run Code Online (Sandbox Code Playgroud)

我总是创建一个数组或列表,就像我在上一个例子中所做的那样.但我想知道,是否有更优雅的方式来创建所需的IEnumerable或ICollection?

如果能做到这一点,那将是非常酷的:

Foo({ o1, o2, o3 });
Run Code Online (Sandbox Code Playgroud)

编译器将创建最抽象的可能集合,以满足IEnumerable或ICollection的需要(取决于函数接受哪一个).

无论如何,如何将o1,o2和o3传递给IEnumerable或ICollection参数?

.net c# ienumerable icollection function-parameter

9
推荐指数
1
解决办法
1880
查看次数

我的(巨大的)应用程序抛出一个OutOfMemoryException,现在是什么?

这是迄今为止我构建的最复杂的软件,现在它似乎在某些时候耗尽了内存.我还没有进行过广泛的测试,因为我有点迷失了我应该如何解决手头的问题.

HandleCount: 277
NonpagedSystemMemorySize: 48136
PagedMemorySize: 1898590208
PagedSystemMemorySize: 189036
PeakPagedMemorySize: 1938321408
VirtualMemorySize: 2016473088
PeakVirtualMemory: 2053062656
WorkingSet: 177774592
PeakWorkingSet: 883834880
PrivateMemorySize: 1898590208
PriviligedProcessorTime: 00:00:15.8593750
UserProcessorTime: 00:00:01.6562500
TotalProcessorTime: 00:00:17.5156250
GDI Objects: 30
User Objects: 27
Run Code Online (Sandbox Code Playgroud)

我有一个自动化的全局异常捕获器,在异常时收集上述信息(使用System.Diagnostics.Process) - 以及异常信息,日志和屏幕截图 - 并通过电子邮件发送给我所有内容.

这已经很好地工作了,因为我已经能够根据电子邮件信息插入错误.到目前为止,这是.该软件有数万行,并使用托管和非托管资源.

我可以逐行开始编写代码,但有些我觉得这可能不是尝试推断内存构建问题的最佳方法.

由于我以前从未做过这种分析,你会如何建议解决这类问题?

.net c# memory profiling

6
推荐指数
3
解决办法
641
查看次数

这个线程安全吗?

这个线程安全吗?

private static bool close_thread_running = false;
public static void StartBrowserCleaning()
{
    lock (close_thread_running)
    {
        if (close_thread_running)
            return;

        close_thread_running = true;
    }

    Thread thread = new Thread(new ThreadStart(delegate()
    {
        while (true)
        {
            lock (close_thread_running)
            {
                if (!close_thread_running)
                    break;
            }

            CleanBrowsers();

            Thread.Sleep(5000);
        }
    }));

    thread.Start();
}

public static void StopBrowserCleaning()
{
    lock (close_thread_running)
    {
        close_thread_running = false;
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading locking thread-safety

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

如何使用POP3从Gmail获取未读/新邮件?

使用OpenPOP .net客户端从Gmail获取邮件.

我想知道如何才能获得新消息?

目前,我获取原子提要,然后获得与Feed一起使用OpenPOP客户端的电子邮件数量(从第一个开始).

    GmailAtomFeed feed = new GmailAtomFeed("user", "pass");
    feed.GetFeed();

    int unread = feed.FeedEntries.Count;

    POPClient client = new POPClient("pop.gmail.com", 995, "user", "pass", AuthenticationMethod.USERPASS, true);



    for (int i = 0; i < unread; i++)
    {
        Message m = client.GetMessage(i, false);

        // ...
    }
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

如何设置要读取的未读消息?

c# email gmail pop3

3
推荐指数
1
解决办法
1万
查看次数