就是在winforms里面就是让用户自己添加多个tabControl并且将不同的数据库的配置信息写在每个上面,
将其记录在ini里面或者Config里面。
逐个点击tabControl上的开始操作按钮,每个tabControl上做的是不同的操作
tab1:将ip1,数据库1,表1的数据转移到 ip0,数据库0,表0中,并且将转移情况输出在richtextbox1.
tab2:将ip2,数据库2,表1的数据转移到 ip0,数据库0,表0中并且将转移情况输出在richtextbox2.
tab1:将ip3,数据库3,表3的数据转移到 ip0,数据库0,表0中并且将转移情况输出在richtextbox3.
里面的操作互不干涉,我有见过人家用委去做...其实叫我就想不太明白:麻烦有空的大神和我稍微描述下这工作的思路么?
其实我还在想可不可以每个TabControl开启一个线程,这样做的话 会不会很麻烦?我没接触过多线程的
.
.
.
首先,你要明白两个概念,什么叫线程,什么叫进程。
通俗一点说,你在Windows操作系统中,可以打开WORD,EXCEL,还有你开发的软件,其中一个软件在进行长达10分钟的操作时,另外一个软件仍然可以操作,响应键盘、鼠标事件,这三个东东我们称为进程。
在一个软件中(比如你这儿说的WINFORM软件),当软件在进行某些耗时的操作,比如迁移数据表,可能你点一下鼠标,
软件要跑5分钟,这时候,你只好去冲一杯咖啡了。
所以有了线程,所谓的线程的意思是,当你在一个软件中,你可以开启一个线程,进行耗时的操作,
这时候,你的软件仍然可以响应键盘、鼠标操作。比如这时候,你可以在TAB之间切换。
但是线程不能解决的问题是资源占用,比如你开了100个线程,CPU也只有一个,硬盘也只有一个。
除非你是在100个数据库服务器之间进行数据库迁移,否则速度方面没有太多影响。
线程解决的是用户友好度,让你的软件不会因为耗时的操作而陷入假死状态。
同一控件上是不可能多线程的,就算用多线程也是排队执行ui的,那还不如单线程
那我用委托去处理这个转移表数据的方法,可行么 ?效率会比一个一个开程序更高么
多线程是需要专门开辟出来的,
IO 是瓶颈,都是访问同一个硬盘的数据库,不会提升多少。
没问题,当用户点击操作的时候,将操作的代码放在另外一个线程中执行即可。这样用户点击多个操作就开辟多个线程,不会将UI线程卡住,各做各的事情。至于数据库就更不用担心了,数据库本身都是为高并发设计的,楼上的说法是不对的。