답변 감사합니다. Data값을 받아서 저장하는 부분만 해결 된되면... 동기화도 맞춰야겠군요..^^
But, 파일이름을 쓰레드로 넘기는부분이 감이 안잡히네요..
Intotheblue 님이 쓰신 글 :
: TThread 를 쓰신거면.
:
: 생성자에 바로 시작할건지 , 정지 시킬건지 flag를 줄수 있게 되어 있습니다.
: 그리고 suspend,resume 으로 제어가 가능하고요.
:
: 동기화를 신경 안쓰시고 코딩하셨던데..
: 이것도 문제가 될 가능성이 높습니다.
:
:
: 성웅 님이 쓰신 글 :
: : 답변 감사합니다.
: :
: : filename을 thread에 넘기고 thread에서는 저장하라고 하셨는데요
: : 아래 소스처럼 form6에 버튼을 하나 만들어서, 저장하는 창을 띄우기까진 했습니다.
: :
: : 그런데 "test_thread1 = new Tthread_note1; "을 선언함으로써
: : 쓰레드 동작이 시작되는데, 파일이름을 어떻게 넘기는지요..
: : 그리고 쓰레드에서 파일이름을 받아 어떤식으로 저장되는지도 궁금합니다..
: :
: :
: : ---------------form6.h------------------------------
: : TStringList* srcFile = new TStringList;
: : TStringList* srcData = new TStringList;
: : ---------------form6.cpp----------------------------
: : void __fastcall TForm6::Button2Click(TObject *Sender)
: : {// Save compsnsated data
: :
: : if(SaveDialog1->Execute()){
: : test_thread1 = new Tthread_note1; // 쓰레드에서 파일저장 시작
: : }
: :
: : while(stay_state);// 쓰레드에서 파일저장이 완료되면 탈출
: :
: : srcFileq->SaveToFile(SaveDialog1->FileName);
: :
: : delete srcDataq;
: : delete srcFileq;
: : }
: : -------------thread1.cpp----------------------------
: : void __fastcall Tthread_note1::Execute()
: : {
: : stay_state=1;
: : for(int i=0; i<100; i++){
: : srcDataq->Add(save_data[i][0]);
: : }
: : srcFileq->Add(srcDataq->CommaText);
: :
: : for(int j=1; j<50; j++){
: : for(int i=0; i<100; i++){
: : srcDataq->Strings[i] = save_data[i][j];
: : }
: : srcFileq->Add(srcDataq->CommaText);
: : }
: : stay_state=0;
: : }
: :
: :
: : 장성호 님이 쓰신 글 :
: : : Application->ProcessMessages(); 는 쓸데 없으니까 빼시구요
: : :
: : : Dialog컴포넌트를 비롯하여 모든 GUI객체는 MainThread(GUI-Thead)에서만 접근해야합니다.
: : :
: : : 쓰레드에서 Execute를 호출해서 Dialog를 띄우는것은 제대로 동작하지 않습니다.
: : :
: : :
: : :
: : :
: : : 사용자 에게 파일명 입력이 필요하면 gui-thead에서 받아서
: : :
: : : filename을 thread에 넘겨 thread에서는 저장만 하세요
: : :
: : : 그럼..
: : :
: : : 성웅 님이 쓰신 글 :
: : : : 멀티스레드를 이용해서 파일저장 속도를 높이고 싶은데요
: : : : 일단은 스레드 한개로 파일만 저장하는 방법을 찾고 있습니다.
: : : :
: : : : 아래 소스처럼 dialog상에서 저장하는 방법을 스레드상에 그대로 적용하였더니 안되네요..
: : : : 혹시, 스레드상에서 파일을 저장하는법 아시는분 답변 부탁드립니다(__)
: : : :
: : : :
: : : :
: : : : void __fastcall Tthread_note1::Execute()
: : : : {
: : : : TStringList* srcFile = new TStringList;
: : : : TStringList* srcData = new TStringList;
: : : :
: : : : if(SaveDialog1->Execute()){
: : : :
: : : : for(int i=0; i<100; i++){
: : : : srcData->Add(save_data[i][0]);
: : : : }
: : : : srcFile->Add(srcData->CommaText);
: : : :
: : : : for(int j=1; j<50; j++){
: : : : Application->ProcessMessages();
: : : : for(int i=0; i<100; i++){
: : : : srcData->Strings[i] = save_data[i][j];
: : : : }
: : : : srcFile->Add(srcData->CommaText);
: : : : }
: : : : }
: : : : srcFile->SaveToFile(SaveDialog1->FileName);
: : : :
: : : : delete srcData;
: : : : delete srcFile;
: : : :
: : : : }
: : : :