避免在VB.NET中等待ExecuteNonQuery

时间:2015-06-02 08:41:30

标签: vb.net oracle plsql

如何继续而不等待使用OracleCommand在VB.net中完成ExecuteNonQuery?

我的程序流程如下:

单击一个按钮后,程序将使用OracleCommand调用OracleDB中的程序包(或多或少PL / SQL将插入或删除/更新)而不返回任何内容。我想要的是避免等待ExecuteNOnQuery完成,以便我可以执行其他任务。

1 个答案:

答案 0 :(得分: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

.....
.....