[英]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.