小编Jar*_*rth的帖子

线程池顺序运行?

我正在编写一个函数来获取目录中的所有文件,但是通过将每个子目录添加到线程池来并行执行.我认为这意味着每个目录都会被并行遍历,因为有很多子目录,所以它比按顺序执行要快得多.我的代码如下:

    private object addlock = new object();
    private void addFiles(string[] newFiles)
    {
        lock (addlock) {
            files.AddRange( newFiles );
            Console.WriteLine( "Added {0} files", newFiles.Length );
        }
    }

    private void getFilesParallel(string dir)
    {
        if (!Directory.Exists( dir )) {
            return;
        }

        string[] dirs = Directory.GetDirectories( dir, "*", SearchOption.TopDirectoryOnly );
        ManualResetEvent mre = new ManualResetEvent( false );

        ThreadPool.QueueUserWorkItem( (object obj) =>
        {
            addFiles( Directory.GetFiles( dir, "*", SearchOption.TopDirectoryOnly ) );
            mre.Set();
        } );

        Process currentProcess = Process.GetCurrentProcess();
        long memorySize = currentProcess.PrivateMemorySize64;

        Console.WriteLine( "Used {0}", memorySize …
Run Code Online (Sandbox Code Playgroud)

c# multithreading

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

SqlCommand什么时候在另一个函数中使用时关闭?

我在C#中有一个程序,我创建了各种类,所有这些都需要调用数据库.所以我决定创建一个静态类来处理所有调用,以便我可以非常轻松地应用深远的变化.在那个类中,我有调用SqlCommand(ExecuteReader()等等)各个部分的函数我最终厌倦了重写所有的连接代码,并将它抽象到另一个函数中getSqlCommand(),该函数只返回一个初始化的函数SqlCommand,用于执行各种命令.我选择不将其传递SqlCommand回其他程序(虽然它是一种公共方法,以防万一我需要它),因为如果你在将结果返回给程序之前我会做一些预处理.

我的问题是,如果/何时SqlConnection关闭?因为它作为a中的返回值被传回SqlCommand,它会保持打开状态吗?如果是的话,我可以关闭吗?这是一些代码(略微剥离),所以你可以看到我在做什么,提前谢谢!

创建的功能SqlCommand:

public static SqlCommand GetSqlCommand(string query)
{
    using (SqlConnection dbConnection = new SqlConnection( SQLConn )) {
        dbConnection.Open();
        SqlCommand cmd = new SqlCommand( query, dbConnection );
        cmd.CommandTimeout = 0;
        return cmd;
    }
}
Run Code Online (Sandbox Code Playgroud)

静态类中命令用法的示例:

public static SqlDataReader executeReader( string query )
{
    try {
       return GetSqlCommand(query).ExecuteReader();
    } catch (SqlException) {
       //Notify User and Resolve Error
    }

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

c# sql-server sqlcommand sqlconnection return-value

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