-1
如何使用OracleCommand等待ExecuteNonQuery在VB.net中完成?避免在VB.NET中等待ExecuteNonQuery
我的程序流程是這樣的:
某個按鈕點擊後,程序將調用使用的OracleCommand在OracleDB的一個包(或多或少的PL/SQL要麼插入或刪除/更新),而不返回的東西。我想要的是避免等待ExecuteNOnQuery完成,以便我可以執行其他操作。
如何使用OracleCommand等待ExecuteNonQuery在VB.net中完成?避免在VB.NET中等待ExecuteNonQuery
我的程序流程是這樣的:
某個按鈕點擊後,程序將調用使用的OracleCommand在OracleDB的一個包(或多或少的PL/SQL要麼插入或刪除/更新),而不返回的東西。我想要的是避免等待ExecuteNOnQuery完成,以便我可以執行其他操作。
您必須使用多線程來處理此交互,但您應該非常小心。當你去使用多線程資源爭用和同步將成爲一個很大的挑戰(我建議你在決定繼續之前找到他們的一些信息)。
如果您沒有正確處理這兩個新現象,就有可能破壞共享資源的狀態,並且您正在編程:在過程仍在執行的過程中,您可能會嘗試重新使用連接,您可以關閉應用程序在過程終止之前,您可以在綁定階段之前更改參數值,以及單個線程無法實現的其他許多事情。
你需要很好的技能才能進入它,所以如果你不想深入研究如何處理你的多線程應用程序,我真的不鼓勵你繼續這個道路。一個簡單的和骯髒的做它可能是以下(這是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
.....
.....
如果你在執行過程中談論無法使用的用戶界面,你需要使用多線程。但你應該更詳細地獲得有用的答案! –
對我的問題做了一些小修改@AlessandroRossi – user3247087