쓰레드 간단 사용법

private Thread m_Thread; public Main() { m_Thread = new Thread(new ThreadStart(update)); m_Thread.Start(); } private void update() { while(true) { if ( m_NodeAni == null ) { m_Thread.Suspend(); } QbTagAnimation tagAni = (QbTagAnimation) m_NodeAni.Tag; QbTagFrame tag = (QbTagFrame) tagAni.getFrame(num); m_PictureBox.paintFrame(tag); m_PictureBox.paintPreviewFrame(tag); if ( tagAni.getCount() <= ++num ) num = 0; Thread.Sleep(1000 / m_nFPS); } }

Thread 객체를 생성하고 주기적으로 업데이트 될 함수(위 소스에서는 update)를 지정하여 Thread를 생성한다.


사용중인 Thread를 잠시 멈추고 싶을때는 m_Thread.Suspend();를 사용하고


멈추어 있는 Thread를 다시 작동 시키기 위해서는 m_Thread.Resume();를 사용한다.


위 소스는 m_NodeAni 객체가 null일때 Thread 동작을 멈추게 되어있다.




 






			Bitmap bmp = new Bitmap(tag.getWidth(), tag.getHeight());
			Graphics g = Graphics.FromImage(bmp);

			for ( int i = 0; i < tag.getBmpCount(); i++ )
			{
				g.DrawImage((Image) tag.getBmp(i), tag.getX(i), tag.getY(i));
			}

			bmp.Save(path, ImageFormat.Png);
tag안에 이미지와 좌표정보를 담고있다.

먼저 새로운 비트맵을 하나 생성하고 그림을 그린다.
그림을 그리고 해당 비트맵을 원하는 형식으로 저장하면 됨.
 






			MemoryStream ms = new MemoryStream();
			bmp.Save(ms, ImageFormat.Png);
			byte[] buf = ms.ToArray();

Bitmap을 Png형식으로 buf에 저장한다.





맥 환경에서 이클립스를 사용해 C/C++ 작업을 하려고했더니

launch failed binary not found 에러가 발생한다.

아무리 찾아봐도 해결불가.......

 
그러다가 위 그림과같이 프로젝트를 생성해서 만들어 보았다.

/*
 ============================================================================
 Name        : HelloWorld.c
 Author      : 
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

//#include <stdio.h>
//#include <stdlib.h>
//
//int main(void) {
//	puts("!!!Hello World!!!"); /* prints !!!Hello World!!! */
//	return EXIT_SUCCESS;
//}

#include <stdio.h>

void main()
{
	printf("Hello world");
}
기본적으로 생성된 코드를 모두 주석처리하고 Hello World를 찍어보았는데

정상작동한다! 뭐가 다른건지 모르겠지만... 일단 실행은 되니...

사용하다가 막히면 다시 찾아봐야겠다 





먼저 windows.h 헤더파일을 포함시켜준다.

사이즈 변경방법 - 원하는 숫자로 변경
 system("mode con:cols=50 lines=30");
제목 변경
 system("title 제목");





헤더 파일을 선언할때 #include <stdio.h> 이런식으로 선언을 한다.
그런데 헤더 파일을 선언할때 <>와 "" 두가지 방법으로 선언하는 것을 보았을 것이다.


먼저 <>를 사용한 헤더 파일 선언.

#include <stdio.h>
C에서 제공하는 표준 헤더 파일 디렉토리에서 지정된 파일을 포함시킨다.


그리고 ""를 사용한 헤더 파일 선언.

#include "myheader.h" 
사용자가 직접 작성한 헤더 파일을 소스 파일과 같은 디렉토리에서 찾아 포함시킨다.


구분자는 우선순위를 지정해 주는 것 뿐이며 구분자가 다르더라도 해당되는 헤더 파일을 알아서 찾는다고 한다.
그런데 직접 만든 헤더 파일을 <>사용해 선언해 주었더니 fatal error C1083: 포함 파일을 열 수 없습니다. 라는 말과 함께 빌드에 실패해 검색 후 ""를 사용해 선언을 하였더니 정상 작동한다. 



+ Recent posts