2015-06-02 26 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 

..... 
.....