c#多线程的问题:同时从一个点连两条线

陌上花花 2010-03-26 05:23:26
正在做一个模拟平台,是一个应用程序WINFORM,不同数据库相连,动态实20个点,然后考虑一个点同周围节点间距离,若距离小于80就连线,目前已经实现了连线功能。在form上有按钮BUTTTON来实现。
当第一次按button时会有一条线,当第二次产生时还会有一条线,现在想用多线程来实现一次将这两条线显示出来,怎么做合适。
由于是随机取点,确实存在多条线符合情况,如何同时把这些线显示出来?
主要代码如下:



private void button3_Click(object sender, EventArgs e)
{//这里是模拟信号发送事件
setinfor();//这里我们把信号传输当成一个单独的事件来做

//以下是引入多线程的操作
Thread threadOne;
   Thread threadTwo;

threadOne = new Thread(new ThreadStart(setinfor));//两个线程共同做一件事情
 threadTwo = new Thread(new ThreadStart(setinfor));//两个线程共同做一件事情

 threadOne.Start();
threadTwo.Start();
threadTwo.Abort();
threadOne.Abort();

} // end button3


private void setinfor()
{
//这其中的代码就是实现划线功能的
//已经测试过,没有问题


}




代码中,setinfor发法是来实现划线功能的,已经测试过,现在就是如何使用多线程来把线全部画出来,
我的思路是只将setinfor最为一个被调用的方法,如new ThreadStart(setinfor);
但是并没有全实现,请帮忙看下,很着急用。谢谢诸位
...全文
139 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
陌上花花 2010-03-28
  • 打赏
  • 举报
回复
感谢各位的帮助,我已经实现了所需要的功能。
ProjectDD 2010-03-27
  • 打赏
  • 举报
回复
多线GDI+没问题,你这个可能要设计一个比如线程间的交互,每次画完,须不须要判断 一下,图的一些指标,然后再传给画线方法,调节画线 的方式,如果需要这样的话,我想可能需要进行多线之间的 资源协调,用锁,来完成这一任务,锁住画线的动态数据报告,地图之类的消息,然后多线协同。
gs0038 2010-03-27
  • 打赏
  • 举报
回复
两个线程一个资源,冲突产行,
陌上花花 2010-03-27
  • 打赏
  • 举报
回复
多谢各位的指点。
qygcom 2010-03-26
  • 打赏
  • 举报
回复
那你把BUTTON下的方法写成递归算法或循环算法,你点一次不就全部画出了?
陌上花花 2010-03-26
  • 打赏
  • 举报
回复
还在继续研究,请有思路的朋友指点一二,在此谢过!
陌上花花 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zhoufoxcn 的回复:]
多不多线程关系不是太大,搞不好还会引起冲突。
当然可以采用将生成的点以Point[]或者List<Point>的方式保存,一个顺着找,一个反着找的方式,二者工作到集合的中点。

在图上一画这个逻辑就出来了。
[/Quote]
情况是这样,目前已经可以顺利找到符合条件的节点,并画出线,但是有多条符合的线,第二次按BUTTON时还能出现这样的线,所以就想把这样符合条件的线一次找出来,所以就想起了多线程。针对这个具体问题,能否给出点具体的建议?
陌上花花 2010-03-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yuwenge 的回复:]
为啥米老是会出现这种逻辑性失败而导致的系统性问题呢?
[/Quote]
能否再说得具体一点呢?
  • 打赏
  • 举报
回复
双重循环遍历点距
卧_槽 2010-03-26
  • 打赏
  • 举报
回复
为啥米老是会出现这种逻辑性失败而导致的系统性问题呢?
周公 2010-03-26
  • 打赏
  • 举报
回复
C# 多线程编程(1):线程的启动
在本篇主要讲述如何启动线程的问题,在启动时可能会遇到无需参数、需要多个参数的情况,在这里讲述了如何解决这些问题的思路。在.net类库中虽然存在着庞大的类库,但是并不是总会有合适的类来解决我们所遇到的问题,但是只要肯动脑筋总会想到合适的办法。

多线程编程(2):线程的同步
在《多线程编程》系列第一篇讲述了如何启动线程,这篇讲述线程之间存在竞争时如何确保同步并且不发生死锁。在本篇讲述了在.net中实现同步锁的几种机制和相关的类。

多线程编程(3):线程池ThreadPool
在多线程编程时也会遇到上面的情况,如果创建了过多的线程将会增加操作系统资源的占用,并且还要处理资源要求和潜在的占用冲突,并且使用了多线程之后将使代码的执行流程和资源竞争情况变得复杂,稍不留心就会产生bug(在第二篇中在我写的代码中就曾经出现过一个bug,后来我自己发现并处理了这个 bug)。在使用多线程编程时对需要同步的资源访问尤其需要注意,如系统资源(系统端口等)、共享资源(文件、窗口句柄等)、属于单个应用程序的资源(如全局、静态和实例字段或属性)。 针对上面的情况,我们可以使用线程池来解决上面的大部分问题,本篇主要讲述.net中的ThreadPool类的特点和用法。

多线程编程(4):多线程与UI操作
本篇主要讲述了使用线程操作Windows应用程序界面的方法,这些方法在编写多线程的UI程序时可以参考。由于在.NET中不允许直接在多线程环境下操作界面UI上的属性,因此需要采用其它办法,本篇就是讲述本人在实际开发中所用到的一些方法。
周公 2010-03-26
  • 打赏
  • 举报
回复
多不多线程关系不是太大,搞不好还会引起冲突。
当然可以采用将生成的点以Point[]或者List<Point>的方式保存,一个顺着找,一个反着找的方式,二者工作到集合的中点。

在图上一画这个逻辑就出来了。
qq2013 2010-03-26
  • 打赏
  • 举报
回复
ding
ding

110,561

社区成员

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

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

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