我知道我可以使用類似下面的回調方法驗證xml的模式,但有沒有一種方法可以同步執行而不是事件驅動?同步XML模式驗證? .NET 3.5
我想到的一種方法是設置一個類成員布爾標誌IsValidated = false然後
調用xml.Validate(ValidationEventHandler)。事件處理程序在完成後將設置IsValidated = true。同時,做一個循環檢查,直到標誌被設置爲真,然後繼續。
這是爲.net 3.5。
public bool ValidateSchema(string xmlPath, string xsdPath)
{
XmlDocument xml = new XmlDocument();
xml.Load(xmlPath);
xml.Schemas.Add(null, xsdPath);
xml.Validate(ValidationEventHandler);
}
好吧,我曾做過一個試驗,看來,xml.validate實際上一直等待,直到執行新的代碼之前的回調已經完成。
在以下示例中,MessageBox.Show(「After Validate」);總是在執行myValidationEventHandler之後發生。
我還通過代碼驗證了這一點。
所以我想這使得我的問題不成問題。
// load etc.
...
xmlValidate(myValidationEventHandler);
MessageBox.Show("After Validate");
private void myValidationEventHandler(object sender, ValidationEventArgs e)
{
for (double i = 0; i < 100000; i++)
{
textBox1.Text = i.ToString();
Application.DoEvents();
}
// do stuff with e
}
我認爲你犯了一個錯字,你的意思是「不同步做」而不是「同步做」,不是嗎? – ggPeti
我不明白你的意思。這是_is_同步。當發現錯誤或警告時,會同步調用「ValidationEventHandler」。你想要什麼? –
通過同步,我的意思是我不想繼續下去,直到我知道是否發現錯誤,因爲我想根據後續的邏輯判斷是否有錯誤。通過事件處理程序,我不知道事件何時可能會觸發,因此我需要等到它啓動才能繼續。 – M3NTA7