.NET中使用多线程的问题。(UP有分)

True1024 2006-05-24 05:49:31
我用 VC.NET 写了一个 COM 用来控制刻录机刻录DVD,用C#调用此COM。
当只有一台刻录机时一切使用正常。

现在需求改了,想用两台刻录机,也就是同一份文件同时刻两张盘。
于是我想到了多线程-》代码如下:
private void 点击刻录()
{
Thread t = new Thread(new ThreadStart(neroTest));
t.Start();
Thread t1 = new Thread(new ThreadStart(neroTest1));
t1.Start();
}

private void neroTest()
{
NeroObject.IBurnMain obj = new NeroObject.BurnMainClass();
string log ="";
string err ="";
obj1.Burn("C:\\X5.VCD","i","刻录测试盘",ref log1,ref err1);
}
neroTest1() 与 neroTest() 代码一样,就是 Burn 中 i 盘符 替换成了 h 盘符 (i,h,为光盘刻录机名称)

问题:
跟踪调试后发现neroTest() 与 neroTest1() 都执行了,但是只有neroTest() 所指定的盘符 i 盘 能刻录出东西来,h则刻不出来。 也就是先调哪个驱动器哪个能刻录,后调的那个则刻录不出来。

请帮忙分析一下原因!
...全文
578 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
fronm 2006-05-29
  • 打赏
  • 举报
回复
接分
up
True1024 2006-05-28
  • 打赏
  • 举报
回复
kssys() :C++ MFC 人气太差。

zhzuo(秋枫) :
我也觉得Nero可能会有其它接口组件,英文不好在SDK中没找到相关接口,而且提供的SAMPLE中没有类似功能。
Koala_sea 2006-05-27
  • 打赏
  • 举报
回复
我也UP
kssys 2006-05-27
  • 打赏
  • 举报
回复
这些底层的知识,在C/C++论坛提问可能效果会好点

楼主现在关心的应该是Nero有没有多刻录机同时刻,而不是底层的实现方式。
aSalt 2006-05-26
  • 打赏
  • 举报
回复
up
elivehai 2006-05-26
  • 打赏
  • 举报
回复
支持。顶了。。
True1024 2006-05-26
  • 打赏
  • 举报
回复
我又拷贝了一个一模一样的COM。引用了两个COM以后,能刻录了,但是刻到快结束时就报错了。
然后刻在盘上的东西读不出来。
而且我发现多线程根本不现实,
个人认为:当挂起一个线程时开始刻录A,然后紧接着挂起另一个线程开始刻录B,此时A就被短暂的停止,当A再次挂起时B又停止,反复后会对刻录机磨损很大,而且刻录的时间会延长。

但Nero的有个版本确实能同时能起多台刻录机,好像不是用的多线程。那还有什么办法?
不知道他底层是如何实现的。
仓木泽 2006-05-26
  • 打赏
  • 举报
回复
肯定在第一个进程执行的时候占用了第二个进程需要的资源,至于是什么资源,就不知道了。
sunyou 2006-05-26
  • 打赏
  • 举报
回复
可能就是你使用的Nero SDK的问题
liujiwe79 2006-05-26
  • 打赏
  • 举报
回复
楼主的sdk可能本身根本就不支持多个刻录机呀
光驱读盘的时候,计算机都会暂时的死锁,直到光驱读完盘
aicsharp 2006-05-26
  • 打赏
  • 举报
回复
up就有分
davidbeckham23 2006-05-26
  • 打赏
  • 举报
回复
up!!
wufato 2006-05-26
  • 打赏
  • 举报
回复
没用过,也不熟悉vc.net,只能帮忙顶一下
marvelstack 2006-05-26
  • 打赏
  • 举报
回复
是不是Nero提供了另外的借口组件。
True1024 2006-05-26
  • 打赏
  • 举报
回复
我又拷贝了一个一模一样的COM。引用了两个COM以后,能刻录了,但是刻到快结束时就报错了。
然后刻在盘上的东西读不出来。
而且我发现多线程根本不现实,
个人认为:当挂起一个线程时开始刻录A,然后紧接着挂起另一个线程开始刻录B,此时A就被短暂的停止,当A再次挂起时B又停止,反复后会对刻录机磨损很大,而且刻录的时间会延长。

但Nero的有个版本确实能同时能起多台刻录机,好像不是用的多线程。那还有什么办法?
不知道他底层是如何实现的。
kssys 2006-05-25
  • 打赏
  • 举报
回复
呵呵,楼主辛苦了。
True1024 2006-05-25
  • 打赏
  • 举报
回复
UP
True1024 2006-05-25
  • 打赏
  • 举报
回复
1.底层 nero sdk VC.NET
2.nero 中有的版本支持多台刻录机同时刻录一个文件,具体是怎么实现的我看不到。
3.我目前有的SDK应该是最新版本的SDK,并不支持同时刻录一个文件。


---------------------------------------------------
希望顶起来,让更多的人看到。
liyufeng1983 2006-05-25
  • 打赏
  • 举报
回复
vc不懂哦,帮顶一下!
liuqm 2006-05-25
  • 打赏
  • 举报
回复
晕,

不会跟列队有关系吧?

会不会是nero 自身就会锁定系统中只能有一个nero 的进程在运行?

楼主看看吧,

没有写过这样的!
加载更多回复(30)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧