unity3d同时访问wcf和数据库(mysql)出现冲突的问题及解决办法

环境:unity3d 5.6  、 mysql(由于某种原因,安装在本地)、wcf服务在远程的云服务器上

很奇怪,(winform和控制台程序并没有这样的问题)当unity3d访问了wcf服务后,再打开mysql数据库,发现无法访问mysql数据库,出现The requested feature is not implemented这样的错误,然而,如果先访问mysql数据库,能访问,接着访问wcf服务,能访问,然后再访问数据库,又访问不了,开始我是这样解决的,首先把需要查询的数据全部查询回来到本地缓存,接着打开wcf,后期不用访问数据库,但是,由于后期增加功能时,新增要求:     1   新增功能需要访问wcf服务    2   而且访问wcf服务要先于访问数据库     

这样就会出现问题

所以,我不得不再想办法,经过搜遍了全网和加上自己的猜想,发现了解决办法,那就是启动子线程进行访问数据库,访问wcf服务在主线程,开始时,我使用Thread的方式启动子线程操作数据库,不过使用这种方式启动的线程,没有参数或者只有一个参数还好处理,当有多个参数需要传递时实现起来比较费劲,而且如果子线程需要传递返回值给主线程处理时,实现起来相当困难,前几天我使用这样的方式没有问题,今天遇到了大问题,那就是程序要求主线程需要等待访问数据库的子线程执行完毕后,主线程才能继续往下执行,并把子线程的结果返回给主线程的wcf服务进行处理,要实现这样的需求,只能使用委托的方式开启线程,这样使我重新认识了委托

参考代码:

        public delegate string DgTest(string para1);
        private void btn_District_Click(object sender, EventArgs e)
        {  
            //实例化 委托对象 并把方法传入委托
            DgTest dg = Test;
            IAsyncResult ir =dg.BeginInvoke('para1',null,null);
            //主程序在此等待接收 返回值,拿到返回值后接着往下执行
            string res = dg.EndInvoke(ir);
        }

        string Test(string para1)
        {
            //code...
        }
发布了66 篇原创文章 · 获赞 48 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/zxy13826134783/article/details/103895634
今日推荐