c# stackhash bex error cross thread invoke

c# 언어로 프로그램을 개발하는 도중 문제 이벤트 이름: BEX 라는 명칭으로 에러가 발생하였습니다.

오류 모듈 이름은 StackHash _ xxxx  이며 이를 구글에 검색해보았지만 익스플로러의 고급 설정인 렌더링을 소프트 방식으로 바꾸라는 방법만 제시하더군요.

 

인터넷 익스플로러 고급설정에 들어갑니다.

인터넷 옵션 – 가속 그래픽 – GPU 렌더링 대신 소프트웨어 렌더링 사용*

이 항목을 클릭하면 해결된다는 MS의 공지가 있었지만 오히려 또 다른 에러를 발생하게 만들더군요.

 

윈도우 10 메인PC에서는 아무런 에러가 발생하지 않지만 윈도우7 가상화 윈도우에서는 특정 DOCUMENT에 의해서 수시로 반응하여

에러로 프로그램이 종료되는것을 확인하였습니다.

 

결국 소스코드 내의 Cross Thread 부분을 수정해주면서 해결되었습니다.

웹브라우저를 실행하고 그 안에서( 또다른 쓰레드 ) 교차현상이 발생하여 같은 동시간대 같은 쓰레드가 같은 모듈을 이용할때 에러가 난것으로 파악되었습니다.

이부분에 대한 소스코드를 공개합니다.

 

TextBox 의 값을 가져올때에는 아래 소스를 이용하면됩니다.


private string getText(TextBox textbox)
{
// result value.
string result = string.Empty;

var getTextValue = new Action(() => result = textbox.Text);

if (textbox.InvokeRequired)
textbox.Invoke(getTextValue);
else
getTextValue();

// return the result.
return result;

}

CheckBox의 Checked ( True, False ) 값을 가져올 때에는 아래 소스를 이용하면됩니다.

private bool Checkbox_checked()
{
// result value.
bool result = false;

// define a function which assigns the checkbox checked state to the result
var checkCheckBox = new Action(() => result = checkBox_특정문자열.Checked);

// check if it should be invoked. 
if (checkBox_특정문자열.InvokeRequired)
checkBox_특정문자열.Invoke(checkCheckBox);
else
checkCheckBox();

// return the result.
return result;
}

 

 

태그:c# avoid cross thread exceptionc# backgroundworker cross thread errorc# close form cross threadc# cross threadc# cross thread control accessc# cross thread data bindingc# cross thread delegatec# cross thread exceptionc# cross thread invokec# cross thread invoke textboxc# cross thread invokerequiredc# cross thread operationc# cross thread operation detectedc# cross thread operation invokec# cross thread operation not validc# cross thread operation not valid control accessed from a thread other thanc# cross thread textboxc# cross thread ui invokec# cross-thread invoke examplec# cross-thread operation not valid accessed from a thread other than the thread it was created onc# cross-thread operation not valid backgroundworkerc# cross-thread operation not valid close formc# cross-thread operation not valid controlc# cross-thread operation not valid control accessed from a threadc# cross-thread operation not valid textboxc# cross-thread operation not valid windows formsc# datagridview cross threadc# ignore cross thread exceptionc# invoke delegate cross threadc# invoke errorc# invoke error object does not match target typec# module invokec# multi thread errorc# powershell invoke errorc# powershell invoke error handlingc# showdialog cross thread exceptionc# sta thread errorc# thread crossc# thread cross exceptionc# thread cross-thread operation not validc# thread errorc# thread error handlingc# thread error method name expectedc# ui cross thread invokec# winform cross threadc# wpf cross thread invokec# 델리게이트cross thread error c#cross thread exception in c# wpfcross thread messaging exception c#handle cross thread exception c#thread abort error c#