簡體   English   中英

C#中的進程多線程

[英]Multi threading of process in C#

我有以下代碼運行以啟動表計算(表計算會觸發一些返回數千行的查詢)。 當我的應用程序僅運行一個實例時,一切正常,但是2個或更多實例則服務器運行變慢,並且開始出現錯誤。

我應該將此代碼轉換為線程嗎? 怎么做?

private static object _lock = new object();

private void RunTable(string outputType, string _outputDataType) {

        Server.ScriptTimeout = 300;

        string returnCode = string.Empty;
        lock (_lock)
        {
            using (SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MainDll"].ToString()))
            {
                connection.Open();
                using (SqlCommand command = new SqlCommand(sql.ToString(), connection))
                {
                    command.CommandType = CommandType.Text;
                    command.CommandTimeout = 300;
                    returnCode = (string)command.ExecuteScalar();
                    Dispose();
                }
                Dispose();
            }
        }

首先:如果您遇到錯誤,請告訴我們您遇到了什么錯誤。

第二:您要讀取多少數據(即可以將所有數據加載到RAM中)?

第三:如果無法一次加載所有數據,請嘗試使用SqlDataReader連續讀取數據庫。

關於多線程:它實際上取決於您的瓶頸所在。 如果您的瓶頸正在從數據庫中讀取,那么對它進行多線程處理將不會帶來很多好處(特別是如果您的數據庫不允許並發訪問)。 一旦從數據庫中獲取了數據,就可以使用線程來處理數據,當您必須使用SqlDataReader因為您要逐條記錄讀取數據),這種方法特別有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM