摘要: C #中的几个线程同步对象方法 1 在编写多线程程序时无可避免会遇到线程的同步问题。什么是线程的同步呢? 举个例子:如果在一个公司里面有一个变量记录某人T的工资count=100,有两个主管A和B(即工作线程)在早一些时候拿了这个变量的值回去,过 了一段时间A主管将T的工资加了5块,并存回count变量,而B主管将T的工资减去3块,并存回count变量。好了,本来T君可以得到102块的工资 的,现在就变成98块了。这就是线程同步要解决的问题。 在.Net的某些对象里面,在读取里面的数据的同时还可以修改数据,这类的对象就是“线程安全”。但对于自己编写的代码段而言,就必须使用线程同步技术来保证.. 阅读全文
posted @ 2009-08-13 10:09 Avril 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 把代码打一边,然后看注释会明白很多。(新手用)namespace MyInface{ //显示接口就是只能用接口调用。 //隐式接口和类都能调用。 public interface IBookList { void Add(string BookName); void Append(string BookName); void Remove(int position); int Count { get;} string this[int index] { get;set;} } //隐式调用 public class BookList : IBookList { private List< 阅读全文
posted @ 2009-08-12 10:38 Avril 阅读(3527) 评论(1) 推荐(0) 编辑
摘要: 用Event实现线程同步#include <windows.h>#include <iostream.h>//1.线程函数声明DWORD WINAPI Fun1Proc(LPVOID lpParameter);DWORD WINAPI Fun2Proc(LPVOID lpParameter);int tickets=100;HANDLE g_hEvent; //在3.中,保存事件对象void main(){//2.创建线程HANDLE hThread1;HANDLE hThread2;hThread1=CreateThread(NULL,0,Fun1Proc,NULL, 阅读全文
posted @ 2009-07-28 10:37 Avril 阅读(1243) 评论(0) 推荐(0) 编辑
摘要: 转自http://blog.csdn.net/loveghb/archive/2005/06/21/399784.aspx由GetDlgItem函数想到的我们在调用CWnd::GetDlgItem()函数时,MSDN告诉我们:The returned pointer may be temporary and should not be stored for later use.中文意思就是:返回的指针可能是临时的并且最好不要保存起来放到以后用。猜测:返回的指针既然可能是临时的,那么可能是非临时的(永久的),最好不要保存起来放到以后用(有时候可以保存起来)源码面前,了无秘密。让我们深入MFC源代 阅读全文
posted @ 2009-07-20 20:34 Avril 阅读(5680) 评论(0) 推荐(0) 编辑
摘要: MFC程序得到本身路径在开发工程中,往往需要知道当前程序本身所在目录。一种方法是在程序安装的时候利用安装程序把文件路径写入注册表。在较大的程序中,这种方法比较常用另一种,就是在程序得到路径。这样,程序随便移动到哪里,都可以得到正确的路径。这也是本文介绍的方法。方法一:(可以拓展得到与本程序同目录下的exe路径)[code]//首先得到帮助文件的路径CString strFullName = AfxGetApp()->m_pszHelpFilePath;//得到的是:"X:\\XXXX\\XXX.hlp",即为X:\XXXX\XXX.hlp//解析路径,得到当前运行程序 阅读全文
posted @ 2009-07-19 11:08 Avril 阅读(9143) 评论(1) 推荐(0) 编辑
摘要: vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess 三个SDK函数: WinExec,ShellExecute ,CreateProcess可以实现调用其他程序的要求,其中以WinExec最为简单,ShellExecute比WinExec灵活一些,CreateProcess最为复杂。 WinExec 两个参数,前一个指定路径,后一个指定显示方式。 ShellExecute 可以指定工作目录,并且还可以寻找文件的关联直接打开不用加载与文件关联的应用程序,ShellExecute还可以打开网页,启动相应的邮件关联发送邮件等等。 Create 阅读全文
posted @ 2009-07-19 10:03 Avril 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 在vc中调用一般的.exe很简单,用一个函数就可以了:WinExec("D:\\Path\\Path\\XXX.exe",1);或者是:ShellExecute((HWND)GetParent(),"open","D:\\Path\\Path\\XXX.exe",NULL,NULL,SW_SHOWNORMAL);(如果要具体了解这两个函数请求助于msdn!)但是在调用由Matlab生成的.exe时,必须要先设置成当前路径,用到下面的函数:SetCurrentDirectory("D:\\Path\\Path");至 阅读全文
posted @ 2009-07-18 11:15 Avril 阅读(3391) 评论(0) 推荐(0) 编辑
摘要: 函数PlaySound和sndPlaySound的用法[转]函数PlaySound和sndPlaySound的用法一.PlaySound函数的声明为:BOOL PlaySound(LPCSTR pszSound,HMODULE hmod,DWORD fdwSound);1.参数pszSound: 是指定了要播放声音的字符串,该参数可以是WAVE文件的名字,或是WAVE资源的名字,或是内存中声音数据的指针,或是在系统注册表WIN.INI中定义的系统事件声音.如果该参数为NULL则停止正在播放的声音.2.参数hmod: 是应用程序的实例句柄,当播放WAV资源时要用到该参数,否则它必须为NULL.3 阅读全文
posted @ 2009-07-17 14:05 Avril 阅读(821) 评论(0) 推荐(1) 编辑
摘要: Radio Button的使用使用方法: 1.建立一个基于对话框的用用程序,在其中加入三个Radio Button,ID分别为: IDC_RADIO1,IDC_RADIO2,IDC_RADIO3 2.控件的初始化: 在对话框类的OnInitDialog中加入代码: CheckRadioButton(IDC_RADIO1, //第一个参数为该组的第一个单选按钮的IDIDC_RADIO3, //第二个参数为该组的最后一个单选按钮的IDIDC_RADIO3); //第三个参数为该组中被选中的单选按钮的ID 3.在加入一个Bu... 阅读全文
posted @ 2009-07-06 16:11 Avril 阅读(4730) 评论(0) 推荐(0) 编辑
摘要: PurgeComm()函数--清空缓冲区 该函数原型:BOOL PurgeComm(HANDLE hFile,DWORD dwFlags )HANDLE hFile //串口句柄DWORD dwFlags // 需要完成的操作 参数dwFlags指定要完成的操作,可以是下列值的组合:PURGE_TXABORT 终止所有正在进行的字符输出操作,完成一个正处于等待状态的重叠i/o操作,他将产生一个事件,指明完成了写操作 PURGE_RXABORT 终止所有正在进行的字符输入操作,完成一个正在进行中的重叠i/o操作,并带有已设置得适当事件PURGE_TXCLEAR 这个命令指导设备驱动程序清除输出缓 阅读全文
posted @ 2009-07-06 09:58 Avril 阅读(1490) 评论(0) 推荐(0) 编辑