惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

aimingoo的专栏
aimingoo的专栏
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
Last Week in AI
Last Week in AI
The Cloudflare Blog
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
S
SegmentFault 最新的问题
量子位
大猫的无限游戏
大猫的无限游戏
Recent Announcements
Recent Announcements
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Microsoft Security Blog
Microsoft Security Blog
云风的 BLOG
云风的 BLOG
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
I
InfoQ
人人都是产品经理
人人都是产品经理
G
Google Developers Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Engineering at Meta
Engineering at Meta

博客园 - abraham

I want learn the programming web by C#.Who can give a simple step by step tutorial,please? Today begin new life of blog. I want learn the programming web by C#.Who can give a simple step by step tutorial,please? Today begin new life of blog. create dll formt lib with cpp funcs or c just funcs by hand. pub class into dll in dos by hand step by step. put class into dll by using vc6.0 How To Read a Big Txt File into CEdit and write it as save!. Create a Dlg's Thread and use it,this can use dlg handle. Here is a reason why can not log a SQL CString How to Kill Blanks in a CString,but how to kill Chinese Blanks i can not solve. How to get a Chinese character's PinYin automaticly? PE format is very important,so learn it. create a dll by hand. static/register/atuo/extern/volatile/const STL is very important,so we learn. print a bmp 2 Create COM step by step 2. Create com step by step.1
Create a Thread and Use it.
abraham · 2004-04-18 · via 博客园 - abraham

Thread is very important for us to program.
You can take some steps to create it  and use it and terminite it.
1:create,MUST create a global ThreadProc that run the things you want.
like:
CTestPint2App theApp;
CString threadRet;
DWORD WINAPI threadProc()
//long __stdcall CAboutDlg::threadProc()
{
CTime time;
CString m_time;
int i=0;
for(;;)
{
 time=CTime::GetCurrentTime();
 m_time=time.Format("%H:%M:%S");
 AfxMessageBox(m_time);
 //::SetDlgItemText(AfxGetMainWnd()->m_hWnd,IDC_TIME,m_time);
 i++;
 Sleep(3000);
 if(i=3)
  threadRet="3";
}
return 0;
}
/////////////////////////////////////////////////////////////////////////////
// CTestPint2App initialization
2:use it ,must call an api:
//like:
public :
 DWORD threadId;
 HANDLE hThread;
//above are needed.
void CAboutDlg::OnThreadBegin()
{
 hThread=CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)threadProc,NULL,0,&threadId);
}
//3:terminte the thread is simple too.
like:
void CAboutDlg::OnEndThread()
{
TerminateThread(hThread,1);
}
4:but to use it ,you must declear some global var to store the thread's status
and then according the status,you can do your own desition.
//like:

CTestPint2App theApp;
CString threadRet;//must global!.
DWORD WINAPI threadProc()
////

void CAboutDlg::OnUseThread()
{   int end=0;
    OnThreadBegin();
    while(!end){
 if(threadRet.Compare("")!=0){
    AfxMessageBox("get threadRet:"+threadRet);
    end=1;
 OnEndThread();
 return;
 }
 ::Sleep(100);
}
}

///ok!enjoy it,please.