그래서 필자는 ping 할 필요가있는 PC의 이름을 입력하는 텍스트 상자가 있습니다. 초점이 손실되었을 때 나는 핑을 실행C# 포커스 손실 및 포커스 손실 후 포커스를 잃은 후에 백 그라운드에서 Ping 실행
private void Name_LostFocus(object sender, System.EventArgs e)
{
if (PCIsOnline(textBox.Text))
{
textBox.Background = Brushes.LightGreen;
}
else
{
textBox.Background = Brushes.LightSalmon;
}
}
PCIsOnline은 다음과 같습니다
public static bool PCIsOnline(string arg)
{
Ping pingSender = new Ping();
PingOptions options = new PingOptions();
options.DontFragment = true;
string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
byte[] buffer = Encoding.ASCII.GetBytes(data);
int timeout = 40;
try
{
PingReply reply = pingSender.Send(arg, timeout,
buffer, options);
if (reply.Status == IPStatus.Success)
return true;
else
return false;
}
catch
{
return false;
}
}
PC가 온라인 때, 모든 것이 잘 내가 더 동결을 얻을 수 없지만, PC가 오프라인 일 때 내 응용 프로그램이 정지합니다 언젠가는. 그것은 정상적인 나는 알고, 오프라인 PC를 핑 핑 시간이 걸립니다. 하지만 내 질문은 : 백그라운드에서 ping을 시작할 수있는 방법과 끝날 때 ping 결과에 따라 ping을 시작한 텍스트 상자의 배경색이 변경됩니다.
나는이 문제에 관해서 ping async를 실행했지만 내 경우에는 도움이되지 않았다. 적어도 내 코드에서는 구현할 수 없었다.
[BackgroundWorker] (http://msdn.microsoft.com/en-us/library/cc221403(v=59) .aspx)를 확인하십시오. – Vlad
내 뇌가 얼어 붙은 것 같아. bw는 내가 원하는 것을하기위한 가장 단순한 방법처럼 보이지만 어떻게 구현해야하는지 이해하지 못한다. 내 코드 예제는 정말 도움이 될 것입니다. 어떤 방법으로 고마워요 :) – BolnoYGaD
오케이 내가 내 코드에 BW를 맞출 수있었습니다. Tho 나는 Amandeep Saini 대답 =)에서 예를 사용했습니다. – BolnoYGaD