길이를 줄일 수있는 방법이BackgroundWorker.CancellationPending
체크 포인트에 있습니까?C# BackgroundWorker 취소 검사 점 단축
//PSUEDO METHOD
//DO NOT TAKE THIS AS REPEATING CODE
//IT IS ONLY MEANT TO SHOW MULTIPLE USES OF THE SAME CHECKPOINT
//MY REAL TASK METHOD(S) CONTAIN MANY MANY MANY AREAS THAT DON'T REPEAT AND REQUIRE CHECKPOINTS
public void FakeBWTask()
{
if (this.TW.CancellationPending)
return;
foreach (var F1 in Fake1)
{
if (this.TW.CancellationPending)
return;
foreach (var F2 in Fake2)
{
if (this.TW.CancellationPending)
return;
foreach (var F3 in Fake3)
{
if (this.TW.CancellationPending)
return;
}
}
}
}
:
예를 들어, 나는이 같은 멀티 체크 포인트 상황을 더 쉽게 읽을 수 있도록하기 위해 노력하고있어?
//REAL CODE (CURRENTLY USE THIS)
if (this.TW.CancellationPending)
return;
//PSEUDO REPLACEMENT CODE
this.CkPt(CurrentMethod); //PSEUDO USAGE
//^^^ PARAMETER IS A REFERENCE TO THE CURRENT METHOD, SIMILAR TO `this` FOR AN OBJECT
//OR MAYBE AN EXTENSION METHOD WOULD LOOK CLEANER
CurrentMethod.CkPt(); //PSEUDO USAGE
private void CkPt(Method m) //PSEUDO METHOD
{
/*
POSSIBLY PERFORM OTHER CHECKPOINT TASKS HERE
*/
if (this.TW.CancellationPending)
m.return/*FROM METHOD THAT CALLED ME*/;
}
아래의 예제 코드 return
를 캡슐화하는 방법은 무엇입니까
도움 주셔서 감사합니다 !!
Hmya, 물론 어색한 코드. 스레드에 예외를 주입하는 것은 모두가 좋아하는 허풍이다. 쓰레드 취소가 인간의 지각 시간보다 더 효과적이라는 것은 정말로 중요한 일인가? 50 밀리 초는 CPU 사이클의 hellofalot입니다. –
이벤트가 발생하는 것을 중지하는 것입니다. 실제 코드에서는 이벤트가 50 밀리 초보다 훨씬 길다. 나는 두 번째 코드를 거기에 두어서는 안됩니다. 그 질문을 망치고있어. – PiZzL3