-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