是这样.毕业设计关于线程编程.(至少是我认为是线性编程的方面)看书看资料有几天的时间了.可是程序总不能很好的解决.第二阶段验收截至到月底.现在很是着急.我是把书上的例题给实现了.可是具体到我的设计.不能理解多少.总是不能很好的处理.可能是学习没有深入.也可能我的设计算法先前就没有设计完整.有疑惑.
请问csdn的朋友们,关于在MFC框架下线性编程可以从速学习的路子.指点一二.先谢谢.我是时间不多.有点着急.我就具体的说一下我的设计.我想应该是线性编程的概念.一个文件的处理系统.是服务器端的设计.可以识别新进入服务器端的文件.可以对新文件进行处理和保存等.问题就在这之间的部分.
(我把我想到的问题用数字表示.哪个部分有问题就指教)1>.新进入服务器端的文件被识别时候,(就是创建线程的时候)把需要的文件名作为参数传到处理文件的部分。我照课本使用AfxBeginThread函数.这个不难,看后面.2>.我在主界面上安放有3个指示灯.来表示数据的接收状态(识别的时刻就表示文件已接收).处理状态(处理完成保存文件的时候).空闲状态.
参考老贴子:  http://topic.csdn.net/u/20080820/15/bb50d0f8-4bf0-4173-9358-9a2a142f32e1.html
老贴子我主要是参考了2,8,9楼的建议.3>.与2对应的是我想到是服务器端的设计.我运用了托盘,使界面最小化在任务栏上表示以上指示灯的变化.(托盘形态好像我们的网络连接.MSN登陆,托盘图片只有3种式样变化.就是3个灯)这个是两个线程之前的通信问题吗?还是其他?
这里我打算参考2>.9楼(xsc2001 )的意见.和下面的帖子,这2个帖子也是这两天才有.对我是及时雨.希望有帮助.
http://topic.csdn.net/u/20080918/09/3a33c392-91b3-4d03-a7fb-f2f56b001ab9.html
http://topic.csdn.net/u/20080917/22/95544b85-651b-416a-bab7-d8a5ea8b5fef.html
一定要用很复杂的线性编程的方法吗?问题就是这样.说了个大概.就windous的消息传递和线程.孙鑫的视频第1章和第4章看了不知道多少遍,深入浅出MFC也看了,可是实际设计上用不了.时间紧迫.希望各高手多多帮助.多多指教.关于线性编程以前没有用过.概念上认识一点.很肤浅.天天熬夜.看这个设计老是出不来.上面老催.觉也睡不着.我一直在.有消息就留言.电邮是:[email protected]我的算法就是这样.现在实现有困难.一个是编程基础不好.二是前期设计可能有问题(这个是我最不愿意看到的)如果有更简单的算法.请不惜赐教.谢谢您们.

解决方案 »

  1.   

    你可以看一下,候捷译的《Win32 多线程程序设计》
    这里也有些资料
    http://soft.yesky.com/lesson/36/2280536.shtml
      

  2.   

    最大的疑惑在于需求还没有介绍清楚,进入服务端的文件是什么概念?网络传送文件?如果是MFC,可以使用异步的CSocket,虽然它本身是多线程的,但是不需要你自己创建线程,只管接收消息就行了。
      

  3.   

    我是楼主:
    不好意思。今天课程很多。刚刚下课。to jameshooo :5楼
    “进入服务端的文件是什么概念?网络传送文件?”这个不用想太多。我已经实现了。to sanshao27;Formular1   :7,8楼
    不好意思。可能是太笼统了。设计的内容有些多。一时半会说不完。有具体问题就些在这里吧。我一直在。
      

  4.   

    简单的办法是在创建线程时把要通讯的对象的指针作为参数传进去.
    在线程里直接调用这个指针的函数,或发消息.
    如.
    主界面的指针CMainUI* lpUI;线程1  AfxBeginThread ( ...,(LPVOID)lpUI,...) //不好意思,参数具体在哪个位置忘了在线程里需要换ICON时直接调用事先定义好的函数,
    (CMainUI*)lpUI->SetICON(int status)之类的函数控制ICON的切换.还有在使用线程时注意数据同步的问题.
      

  5.   

    我是楼主:看到楼上mjx1981 的回复。很感谢。就是这个意思。是文件处理线程和UI之间的通讯。和界面上指示灯等的通信。我想 UI和界面上指示灯的表示是一样的。这个 文件处理线程和UI之间的通讯就表示了上述的两个内容。只不过有没有更简单,有容易的方法。谢谢您。
      

  6.   

    我觉得这个已经很简单了. 就算是传消息,也要知道 具体的HWND的, 并且最后还是响应消息函数.
      

  7.   

    我是楼主:我试过一些传消息的方法。我也是初学线程。表达也是问题。写一段代码给看看吧:   for (it3=l_return.begin();it3!=l_return.end();it3++){
      file = *it3;   CString file;
      CImageDoc *pDoc = GetDocument();   
      for (it3=l_return.begin();it3!=l_return.end();it3++){
    file = *it3; 
    pDoc->GetDocTemplate()->OpenDocumentFile(file);                                 CWinThread* pThread= AfxBeginThread(ComputeThreadProc,GetSafeHwnd());
                                    UINT ComputeThreadProc(LPvoid pParam)
                                    {
                                       file = *it3;
                                  pDoc->GetDocTemplate()->OpenDocumentFile(file);
                                          //是这里在线程里直接调用这个指针的函数,或发消息. 给UI和托盘吗?
                                          return 0;
                                    }
                                    //下面是处理函数执行过程。上述的一个简单的线程的代码是这样的吗?请赐教
      

  8.   

    线程SendMessage给窗口(这个窗口可以是UI主窗口,也可以是托盘的属主窗口),窗口处理这个消息并更新托盘图标。
    在工作线程里使用消息发送的方式比其他任何方式都要简单。
      

  9.   

    我是楼主:这个帖子发了一天了.这样的错误我太不应该了。耽误了很多人的时间.在这里说对不起. 注意"线程"与"线性编程".“线性编程是一个用来解决优化问题的工具。在 1947 年,George Dantzig 开发了一种效率方法 —— simplex 算法 —— 来解决线性编程的问题。由于 simplex 算法的出现,线性编程已经在工业界、银行界、教育界、林业、石油行业以及运输业界中广泛地用来解决优化问题。在对财富 500 强公司的调查中,85% 的被调查者都说他们已经使用了线性编程。”贴一个要用所谓线性编程来解决的例子:
    Giapetto 的 Woodcarving 公司生产两种木头制作的玩具:士兵和火车。一个士兵的销售价格为 27 美元,需要耗费价值 10 美元的原料。制造每个士兵需要耗费 Giapetto 的可变人力成本和间接成本一共 14 美元。一辆火车的销售价格为 21 美元,需要耗费价值 9 美元的原料。制造每辆火车需要耗费 Giapetto 的可变人力成本和间接成本一共 10 美元。这家木头士兵和火车的制造商需要两类熟练工人:木工和修整工。一个士兵需要 2 小时的修整工劳动和 1 小时的木工劳动。一辆火车需要 1 小时的修整工劳动和 1 小时的木工劳动。每周 Giapetto 可以获得所有必需的原料,但是只能提供 100 个修整工时和 80 个木工工时。市场对于火车的需求是无限的,但是每周最多可以销售 40 个士兵。Giapetto 希望能够使每周的收益(收入 - 成本)最大化。 
      

  10.   

    我是楼主: http://topic.csdn.net/u/20080920/01/f2fb4b62-908e-4fe3-aa7f-4e54610ca23b.html这里有一个新的帖子是关于纠正的.请看看.