2015-06-02 58 views
-1

如何使用OracleCommand等待ExecuteNonQuery在VB.net中完成?避免在VB.NET中等待ExecuteNonQuery

我的程序流程是這樣的:

某個按鈕點擊後,程序將調用使用的OracleCommand在OracleDB的一個包(或多或少的PL/SQL要麼插入或刪除/更新),而不返回的東西。我想要的是避免等待ExecuteNOnQuery完成,以便我可以執行其他操作。

+0

如果你在執行過程中談論無法使用的用戶界面,你需要使用多線程。但你應該更詳細地獲得有用的答案! –

+0

對我的問題做了一些小修改@AlessandroRossi – user3247087

回答

0

您必須使用多線程來處理此交互,但您應該非常小心。當你去使用多線程資源爭用同步將成爲一個很大的挑戰(我建議你在決定繼續之前找到他們的一些信息)。

如果您沒有正確處理這兩個新現象,就有可能破壞共享資源的狀態,並且您正在編程:在過程仍在執行的過程中,您可能會嘗試重新使用連接,您可以關閉應用程序在過程終止之前,您可以在綁定階段之前更改參數值,以及單個線程無法實現的其他許多事情。

你需要很好的技能才能進入它,所以如果你不想深入研究如何處理你的多線程應用程序,我真的不鼓勵你繼續這個道路。一個簡單的和骯髒的做它可能是以下(這是C#我不知道VB,但它只是一點點不同的語法):

..... 
..... 

OracleCommand c = connection.CreateCommand(); 
c.CommandText = "xxx"; 
c.CommandType = CommandType.StoredProcedure; 
Thread myThread = new Thread(
     (ThreadStart)delegate() 
     { 
      c.ExecuteNonQuery(); 
     } 
    ); 
myThread.Start(); // Here the procedure execution begins in a different thread and you'll lose control about its flow 

..... 
.....