: 여기양식이 빨리 사라지지 않는 이유, 기능을 기다릴 수있는 이유는 무엇입니까? 안녕하세요 저는 코드에서 다음과 같은 한
await Task.Run(() => SomeLongRunningMethod());
if (dataGridViewExt1.Rows.Count > 0)
{
Log.log("Bringing in items");
BringItemsIntoSystem();
this.Close();
}
else
{
MessageBox.Show("No items to bring in", "Complete", MessageBoxButtons.OK, MessageBoxIcon.Information);
Log.log("No items to bring in.");
this.Close();
}
내 BringItemsIntoSystem() 함수와 :
이public void SomeLongRunningMethod()
{
while (ContinueScanning != true)
{
Log.log("ContinueScanning is set to " + ContinueScanning.ToString());
ReturnScannedItems();
}
}
await를 기능을 실행 : 여기
private void BringItemsIntoSystem()
{
try
{
for (int q = 0; q < dataGridViewExt1.Rows.Count; q++)
{
Creator.Insert(0);
Creator.SetValueByName(0, "Lookup", dataGridViewExt1.Rows[q].Cells["LOOKUP"].Value.ToString());
Creator.SetValueByName(0, "Qty", dataGridViewExt1.Rows[q].Cells["Qty"].Value.ToString());
Creator.Commit(0);
Log.log("Item added: " + dataGridViewExt1.Rows[q].Cells["LOOKUP"].Value.ToString() + " with QTY: " + dataGridViewExt1.Rows[q].Cells["Qty"].Value.ToString());
}
}
catch(Exception arr)
{
Log.log(arr.ToString());
MessageBox.Show(arr.ToString());
}
}
내 SomeLongRUnningMethod()이다 그리고 결국 그것은 말한 작업으로 끝난다. 코드를 수행하면 진행되는 진행 ... 및 "BringItemsIntoSystem"이 문제를 상당히 빨리 실행하고 필요한 작업을 수행합니다.
이제 this.Close()에 도달하면 폼을 닫는 데 매우 어려움을 겪고 있습니다.
BringItemsIntoSystem이 아무런 문제없이 잘 실행되기 때문에 무엇을 찾아야할지 모르겠습니다.
대기 기능이 문제를 일으키고 있습니까? 양식을 닫는 중 발생한 대기 시간을 치료하기 위해 할 수있는 일이 있습니까?
로그를 보면 BringItemsIntoSystem은 아무런 문제없이 완료됩니다. 나중에 볼 수 있듯이 다음을 실행해야합니다. this.Close();
이것이 바로 문제가되는 일이 아닙니다. 어떻게 설명해야 할 지 모르겠습니다.
나는 "await Task.Run ..."을 사용하지 않는 다른 프로젝트를 만들었으므로이 프로젝트와 관련이 있다고 가정하지만 BringItemsIntoSystem은 잘 작동하므로 증명 방법을 모른다. 나는 간단한 내 BringItemsIntoSystem() 함수를 교체 한
:
MessageBox.Show ("완료");
다시 말하지만 이것은 아무런 문제없이 발생합니다.
그때 그냥 내가 클릭하면 그것을 수행하는 버튼을 추가 :
this.Close();
거의 UI 모양과 비슷합니다. ... 몇 초 후까지.
확인 됨 양식이 다시 활성화되기 전에 ~ 15 초 정도 지연되어 확인란을 클릭 할 수 있습니다.
나는이 새로운 세부 사항이 누군가가 나를 이해하는 데 도움이되기를 바랍니다.
모든 도움에 감사드립니다!
_ "양식을 닫는 데 매우 어려움을 겪고 있습니다."- 정확히 무엇을 의미합니까? 코드에는 노력의 개념이 없습니다. 그것은 무엇인가 할 수 있거나 불가능할 수 있습니다. 코드가 무언가를 할 수없는 경우는 아니지만 충분한 노력을 기울인 후에는 갑자기 발생할 수 있습니다.하지만 정확히 "매우 힘든 시간을 갖는"것입니다. 문제를 확실하게 재현 할 수있는 좋은 [mcve]를 갖도록 질문을 수정하십시오. State _clearly_ 그리고 _precisely_ 그 코드가하는 일, 그것이 원하는 것과는 다른 점, 그리고 _specifically_ 알아내는 데 도움이 필요한 것. –
우리가 [mcve]를 만드는 데 시간을 투자한다면 정말 좋을 것입니다. 그렇게하기 위해 취하는 노력은 우리가 그것을 해결하는 것이 사소한 것이거나 그 길을 따라 문제를 파악할 것입니다. 지금 당장 당신은 유일한 대답으로 모호한 추측을하고 있습니다. 당신이 적당한 대답을 원한다면 적절한 질문을하기 위해 열심히 노력하십시오. – Enigmativity