簡體   English   中英

C#線程/查詢執行兩次

[英]c# thread/query executing twice

我正在研究一些針對sql服務器分析服務執行MDX查詢的代碼。 MDX查詢在同一線程上執行了兩次,我不知道為什么。 查詢應該只執行一次

以下是一些代碼。 誰能幫忙。

      private void Start_QueryWorkers()
    {            
           foreach (QueryThread th in _QueryWorkers)
           {
          SSASQuery q = new SSASQuery();                      
            q.QueryText = "SELECT NON EMPTY { [Measures].[count] } ON COLUMNS FROM [cube]";                                 
            q.queryThread = th;              
            th.WorkerThread.RunWorkerAsync(q);
        }           
    } 

    private void QueryWorkerThread_DoWork(object sender, DoWorkEventArgs e)
    {
        SSASQuery q = e.Argument as SSASQuery;    
        OleDbCommand cmd = new OleDbCommand(q.QueryText, q.queryThread.conn); 
        OleDbDataReader rdr = cmd.ExecuteReader();              
           rdr.Close();         
    }

      private void btnStartTest_Click(object sender, EventArgs e)
    {     
            string strConnString = "Provider=MSOLAP;Data Source=SRV001"  + ";Initial Catalog=Cube_2015"  + ";";
         _QueryWorkers.Clear();
        {                
            QueryThread thread = new QueryThread(strConnString);          
             thread.WorkerThread = new BackgroundWorker();
              thread.WorkerThread.DoWork += new DoWorkEventHandler(this.QueryWorkerThread_DoWork);                                   
               _QueryWorkers.Add(thread);       
        }                              
            Start_QueryWorkers();            
    }            
} 

class SSASQuery
{ 
    public string QueryText { get; set; }     
    public QueryThread queryThread { get; set; }         
}

class QueryThread
{
    public QueryThread(string connString)
    {
        this.connString = connString;
        conn = new OleDbConnection(connString);
        conn.Open();        
        queryList = new SortedList();
    }
    public SortedList queryList { get; set; }
    public string threadName { get; set; }
    public string connString { get; set; }
    public OleDbConnection conn;     
    public BackgroundWorker WorkerThread { get; set; }       
     }

}

解決了。 代碼還可以,這是連接字符串兩次執行查詢時出現的問題

暫無
暫無

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

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