C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[40648] [질문] 비동기로 실행하는 동안에는 작업을 수행할 수 없습니다. 라는 메시지 에러
초보빌더 [] 2689 읽음    2005-06-20 18:46
"비동기로 실행하는 동안에는 작업을 수행할 수 없습니다."
라는 에러 메시지는 어떤 경우 나타 나나요?
Thread가 돌아가는 상황에서 폼의 버튼을 클릭하면 위와 같은 메시지 에러가 발생합니다.
그래서 쓰레드를 Suspend(); 시키고 작업을 진행후 종료되면 Resume(); 시켜도
위와 같은 메시지가 발생합니다.
문제는 항상 나타나는 에러가 아니고
나올때가 있고 나오지 않을때가 있다는 것입니다.
나올 경우 확률이 높기는 하지만..
어떤 경우 비동기에 대한 에러가 발생하는지 알려주세요.
빌더도 익숙치 않고 쓰레드도 익숙치 않고 ㅠㅠ 힘드네요

===============================================
제 소스입니다.
//쓰레드
__fastcall TIPMThread::TIPMThread(bool CreateSuspended)
    : TThread(CreateSuspended)
{
    Priority = tpNormal;
}
//---------------------------------------------------------------------------

void __fastcall TIPMThread::Execute()
{
    try
    {
        while(!Terminated)
        {
            //-- DB에서 실행여부를 확인
            if(frmMain->funGetService())
            //-- 서비스 실행 (Y)
            {
                frmMain->funSetInterface(0); // 화면을 바꿔줍니다.

                //-- 실행 모드
                frmMain->shaMonitor->Brush->Color = clYellow;
                frmMain->lblStatus->Caption = "Message : 서비스 사용";

                //-- 환경설정 GET
                frmMain->funGetAgent();
                frmMain->funGetType();

                // - 서비스 실행
                frmMain->funRUNService();

                if(frmMain->btnExit->ShowHint == true) break;

                if (!(frmMain->lblStatus->Caption == "Message : 서비스 중지 준비 중 입니다."))
                {
                    //-- 대기 모드
                    frmMain->shaMonitor->Brush->Color = clSilver;
                    frmMain->lblStatus->Caption = "Message : 서비스 대기";

                    ::Sleep(int(frmMain->AgentInfo.agnt_look) * 60000);
                }
            }
            else
            //-- 서비스 중지 (N)
            {
                frmMain->funSetInterface(1);
                frmMain->funClearBLKIP();
            }

            frmMain->Refresh();
        }
    }
    catch ( ... ) {}
}

//버튼 1
    IPMThread->Suspend();

    if (btnLoop->Caption == "중 지")
    //-- Agent 실행 상태에서 진행(일시중지 버튼상태)
    {
        funSetService(1);           // 에이전트에서 중지된 내용을 DB에 설정
        lblStatus->Caption = "Message : 서비스 중지 준비 중 입니다.";
    }
    else
    //-- Agent가 일시정지 상태 (시작 버튼상태)
    {
        funSetService(0);           // 에이전트에서 실행된 내용을 DB에 설정
    }

    IPMThread->Resume();

    frmMain->Refresh();
서비스 실행/중지

//버튼2 (이놈은 환경설정 폼을 하나 실행시킵니다.)
    IPMThread->Suspend();
    frmConfig->ShowModal();

    //-- Agent Load Config
    frmMain->funGetAgent();
    frmMain->funGetType();
    IPMThread->Resume();

    if (exitFlag)
    {
        Close();
    }

+ -

관련 글 리스트
40648 [질문] 비동기로 실행하는 동안에는 작업을 수행할 수 없습니다. 라는 메시지 에러 초보빌더 2689 2005/06/20
40653     Re:[질문] 비동기로 실행하는 동안에는 작업을 수행할 수 없습니다. 라는 메시지 에러 열씸! 1721 2005/06/20
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.