0
POST 메서드를 사용하여 서버와 통신하고 API 요청을 통해 데이터를 가져 오는 작은 C# 응용 프로그램이 있습니다. 그것은 아파치 서버입니다.C# BackgroundWorker 일시 중지
제 문제는 C# 응용 프로그램이 계속 많은 요청을 보내고 서버가 수많은 로그 파일을 생성한다는 것입니다.
BackgroundWorker를 사용하고 몇 초 동안 일시 중지하고 싶지만 Thread.Sleep (5000)이 작동하지 않습니다.
이 응용 프로그램은 시스템 트레이에서 실행 중이며 GUI가 없으며 일부 콘텐츠 만 가져 와서 인쇄 할 수 있습니다.
코드 :
private void _bgWorker_DoWork(object sender, DoWorkEventArgs e)
{
JSONParser parser = new JSONParser(_config.Prop.server + "content/api.php", "print", "getAll");
try
{
while (!_bgWorker.CancellationPending)
{
try
{
JSONPrintNeeds needs = parser.DownloadAll();
List<JSONPrintNeed> temp = new List<JSONPrintNeed>();
foreach (JSONPrintNeed need in needs.data)
{
temp.Add(need);
}
foreach (JSONPrintNeed need in temp)
{
Printer printer = new Printer(need.megrendeles);
printer.PrintController = new StandardPrintController();
List<String> installed = new List<String>();
for (int i = 0; i < PrinterSettings.InstalledPrinters.Count; i++)
{
installed.Add(PrinterSettings.InstalledPrinters[i]);
}
if (installed.Contains(need.nyomtato))
{
printer.PrinterSettings.PrinterName = need.nyomtato;
}
int format = int.Parse(need.format);
switch (format)
{
case 0:
default: // txt
printer.Print();
break;
case 1: // html
SetDefaultPrinter(need.nyomtato);
browser.DocumentText = need.megrendeles;
browser.Print();
break;
}
JSONResult result = parser.DeleteOne(int.Parse(need.ny_id));
}
parser.DeleteAll();
Thread.Sleep(5000);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
확장 'Thread.Sleep (5000)'이 (가) 작동하지 않습니다. –
'Thread.Sleep'가 작동하지 않습니까? 어떻게 그 결정을 내리고 있습니까? 당신은 읽어야 –
이 [http://stackoverflow.com/questions/10287650/send-a-backgroundworker-to-sleep-while-checking-for-cancellation][1] [1] http://stackoverflow.com/questions/10287650/send-a-backgroundworker-to-sleep-while-checking-for-cancellation –