私は、次のようなコールバックメソッドを使用してスキーマに対してxmlを検証できますが、イベントドリブンではなく同期的に行うことができる方法はありますか?同期XMLスキーマの検証? .NET 3.5
私はクラスメンバのブール値フラグを設定することを考えています。IsValidated = false then
xml.Validate(ValidationEventHandler)を呼び出します。イベントハンドラは、終了後にIsValidated = trueを設定します。その間に、フラグがtrueに設定されてからcontinueになるまでループチェックを行います。
これは.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);
}
[OK]を、私はテストを行っている、新しいコードが実行される前にコールバックが完了するまで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
私はあなたが何を意味するか分かりません。これは同期的です。また、ValidationEventHandlerは、エラーまたは警告が検出されたときに同期的に呼び出されます。代わりに何をしたいですか? –
同期では、エラーがあるかどうかを知るまで続行したくないということです。なぜなら、エラーがあったかどうかを後続のロジックに基づいているからです。イベントハンドラでは、イベントがいつ発生するかはわかりません。したがって、続行する前にイベントが発生するまで待つ必要があります。 – M3NTA7