두 개의 입력 함에서 사용자 이름과 암호를 사용하는 workerthread가 있지만 사용자 이름/암호가 비어 있으면 작업을 중지하고 싶습니다.스레드를 중지/시작하는 방법은 무엇입니까?
Suspend() 메소드를 사용해 보았지만 intellisens가 구형이라고 알려줍니다. 어떻게하면 스레드를 중지/시작합니까?
두 개의 입력 함에서 사용자 이름과 암호를 사용하는 workerthread가 있지만 사용자 이름/암호가 비어 있으면 작업을 중지하고 싶습니다.스레드를 중지/시작하는 방법은 무엇입니까?
Suspend() 메소드를 사용해 보았지만 intellisens가 구형이라고 알려줍니다. 어떻게하면 스레드를 중지/시작합니까?
왜 입력을 얻기 위해 스레드가 필요한지 알 수 없지만 작업이 완료 될 때마다 스레드에서 돌아와서 스레드를 중지해야합니다. 그냥 죽여서는 안됩니다.
if(!validInput(username, password))
return; // et voila
편집 : 당신이 (같은 자바 통지/일시 정지/다시 시작 또는 대기) 이상의 스레드를 동기화하려는 경우, MSDN에서이 정보가 유용 할 수 있습니다
것은 Thread.suspend이있다 더 이상 사용되지 않습니다. 의 다른 클래스를 사용하십시오. 뮤텍스, 이벤트 및 세마포를 에 동기화하거나 리소스를 동기화하는 등의 System.Threading을 사용하십시오. http://go.microsoft.com/fwlink/?linkid=14202
당신은 Thread.Abort()
방법을 사용할 수 있지만 인해 심하게 스레드를 종료에 일관성이 공유 상태로 이어질 수 있습니다. 더 나은 대안은 CancellationToken
을 사용하여 공동 종료를 사용하는 것입니다.
// Create a source on the manager side
var source = new CancellationTokenSource();
var token = source.Token;
var task = Task.Factory.StartNew(() =>
{
// Give the token to the worker thread.
// The worker thread can check if the token has been cancelled
if (token.IsCancellationRequested)
return;
// Not cancelled, do work
...
});
// On the manager thread, you can cancel the worker thread by cancelling the source
source.Cancel();
Thread.Abort()는 악마입니다 –
그 이유는 그가 그것을 언급 @steve – atamanroman
스레드가 사용자 이름과 암호를 "가져 오는"방식은 무엇입니까? 어떻게 스레드를 시작합니까? 스레드를 시작할 수 없습니까? –
더 흥미롭게도, 당신이 이것을하기 위해 스레드를 생성하는 이유는 ... –
지금까지 가지고있는 코드를 보여줄 수 있습니까? 아마도 당신이 원하는 것을 더 분명하게 할 수있을 것입니다. –