ahmed_sa Ответов: 0

Как заставить функцию executenonquery использовать многопоточность для предотвращения зависания компьютера ?


Я использую функцию ExecuteNonQuery() для вставки, обновления и удаления с помощью c# .

Эта функция используется для того чтобы сделать вставку и обновление более тысячи записей может быть 10000 записей так что компьютер зависает

чтобы решить эту проблему мне нужно изменить функцию

ниже, чтобы разрешить многопоточность

так что мне нужно изменить функцию, чтобы разрешить многопоточность

Как я это делаю в коде ?

<pre>public static int ExecuteNonQuery(string sql, DbParameter[] dbprmParameters = null)
    {
        return ExecuteNonQuery(sql, null, dbprmParameters);
    }
    public static int ExecuteNonQuery(string sql, IDbConnection dbConnection, DbParameter[] @params = null)
    {
        int RecordsCount = 0;

        lock (synObj)
        {
         
            if (cmd.CommandTimeout < 360)
                cmd.CommandTimeout = 360;
            if (sql == "") return 0;

            sql = AnalyizeBooleanFields(sql);
            cmd.CommandText = sql;

            cmd.Parameters.Clear();

            if (@params != null)
            {
                for (int i = 0; i < @params.Length; i++)
                {
                    cmd.Parameters.Add(@params[i]);
                }
            }
            if (dbConnection == null)
            {
                if (WithTransaction)
                    dbConnection = BeginTransaction();
                else
                    dbConnection = InitializeConnection();
            }
            if (dbConnection.State != ConnectionState.Open) dbConnection.Open();
            if (WithTransaction) cmd.Transaction = _transaction;
            cmd.Connection = dbConnection;
            RecordsCount = cmd.ExecuteNonQuery();
            if (!WithTransaction) dbConnection.Close();
        }
        return RecordsCount;
    }

public static string AnalyizeBooleanFields(string sql)
    {
        switch (DataAccess.Provider)
        {
            case Providers.Access2003:
            case Providers.Access2007:
                sql = sql.Replace("{{1}}", "True");
                sql = sql.Replace("{{0}}", "False");
                break;
            case Providers.SQLServer:
            case Providers.MySQL:
            case Providers.Oracle:
            default:
                sql = sql.Replace("{{1}}", "1");
                sql = sql.Replace("{{0}}", "0");
                break;
        }
        return sql;
    }

}

How to edit function above to allow multi threads ?

I work in visual studio 2010 windows form application with sql server 2012 .


Что я уже пробовал:

How to make function ExecuteNonQuery to use multi thread to prevent computer hangs ?

0 Ответов