小编Roc*_*cky的帖子

是否使用静态类来方便访问appsettings?

我的应用程序的app.config文件中有一些键可以容纳电子邮件设置.我目前正在开发的应用程序有几个地方我需要发送一封电子邮件(主要是在错误检查中让我们知道发生了一些不好的事情).为了更容易获取我需要它的设置(而不是回到app.config查找要使用的文本字符串,ConfigurationManager.AppSettings["SomeKey"].ToString()我创建了一个简单的静态类来容纳一些readonly属性,返回我需要的值.这是基本结构

internal static Class myClass
{
    internal static string setting1
    {
        get { return ConfigurationManager.AppSettings["SomeKey"].ToString(); }
    }
    internal static string setting2
    {
        get { return ConfigurationManager.AppSettings["SomeOtherKey"].ToString(); }
    }
}
Run Code Online (Sandbox Code Playgroud)

我这样做是否可以接受?我找不到这个问题,但不禁想到我错过了什么.

附加信息:

我知道简单地使用Settings.Settings文件的方法.由于我工作的代码策略,我无法使用Settings.Settings文件,这将使我这样做的方式变得不必要.

编辑:通过"可接受"我的意思是它通常做或被认为是一个好主意?我意识到整个社区都不能推测我工作的可接受性.

.net c#

4
推荐指数
2
解决办法
6190
查看次数

lambda c#中"()=>"的目的是什么?

我一直试图解决这个问题,这真的让我烦恼.我有一些看起来像这样的代码

static T MyFunction<T>(Func<T> action, int i, int i2)
{
    ...some code here
}
Run Code Online (Sandbox Code Playgroud)

当我需要调用此代码时,我尝试了这个

var result = MyFunction<List<string>>(MethodThatReturnsListofString(int number), 1,2)
Run Code Online (Sandbox Code Playgroud)

它失败说明最佳重载具有无效参数但是当我尝试以下操作时

var result = MyFunction<List<string>>(() => MethodThatReturnsListofString(int number), 1,2)
Run Code Online (Sandbox Code Playgroud)

它工作正常.在这种情况下,"()=>"的功能是什么.我认为()不能用于需要超过0 args的方法.

c# lambda delegates

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

如何获取 Parallel.ForEach 完成的百分比

我有一些过程可以按顺序迭代一组大文件并从中提取信息来写入\更新我们的数据库。这些文件通常每个文件都有几千行,因此我构建了一个 Parallel.ForEach 来同时处理给定文件中的多行(由于需要按顺序应用每个文件,因此一次只处理一个文件)。现在我需要了解当前文件的大约处理量,以便我可以向管理层提供剩余运行时间的指示。到目前为止我有以下内容

public void MyProcess(FileItem file)
{
    List<string> lines = file.GetLines(); //some process to get the lines to handle
    long cntr = 0; //The counter to track

    Parallel.ForEach(lines, crntLine =>
    {
       Console.Writeline(String.Format("Currently finished {0} out of {1} lines",cntr,lines.Count());
       InterLocked.Increment(ref cntr);

       //...Code to process crntLine here

    });
}
Run Code Online (Sandbox Code Playgroud)

我根本不关心已处理哪些行,只关心总共处理了多少行,这样就可以回答它在当前文件中的位置有多远的问题。这会给我带来我正在寻找的可靠的东西吗?

c# multithreading parallel.foreach

0
推荐指数
1
解决办法
1719
查看次数

标签 统计

c# ×3

.net ×1

delegates ×1

lambda ×1

multithreading ×1

parallel.foreach ×1