C#中同一ODBCConnection对象能否支持多线程并行执行命令?
关于C#中共享ODBCConnection并行执行命令的问题
不能通过单个ODBCConnection对象同时执行并行命令,第二个线程的命令不仅会等待第一个线程执行完成,甚至大概率会直接抛出异常,原因如下:
ODBCConnection并非线程安全的对象,.NET官方规范明确要求同一连接实例不能被多个线程同时操作。- 当第一个线程正使用该连接执行命令时,第二个线程尝试复用该连接执行命令,要么会被阻塞至第一个线程释放连接资源,要么会触发
InvalidOperationException,提示连接当前正处于使用状态。 - 若要实现命令并行执行,正确的方案是为每个线程创建独立的
ODBCConnection实例;或者依赖.NET默认启用的ODBC连接池机制,它会自动高效管理连接资源,避免频繁创建、销毁连接带来的性能损耗。
内容的提问来源于stack exchange,提问作者Иван Демидов
相关产品推荐
相关产品推荐

