Итак, у меня есть класс, содержащий функцию, которая может проверить, изменяется ли элемент на сайте (в моем примере кода это класс B).У меня также есть несколько классов, которые должны использовать эту функцию, чтобы увидеть, есть ли изменения в веб-элементе, а затем возобновить их функцию (в моем примере кода это класс A).Это где я столкнулся с проблемой.
В моем примере кода: основная функция в классе A хочет проверить, изменяется ли элемент и вызывает ли функцию в классе B. Теперь главной функции в классе A нужно дождаться, пока метод в классе Bнайти изменение в указанном веб-элементе.У меня вопрос: как я могу заставить метод main в классе A ждать DispatcherTimer в классе B?
static class A
{
private static void main()
{
B.CheckWebElements("the element name");
//NOW WE WANT TO WAIT UNTIL CLASS B IS DONE...
}
}
Static class B
{
private static DispatcherTimer dispatcherTimer;
public static void CheckWebElements(string elementName)
{
//Get the last list
var lastDoc = (HTMLDocument)Form.RosterBrowser.Document;
List<string> lastDoc_list = ThisFuncReturnsList(lastDoc, elementName); //This function returns a list of all the child elements under the element with the name: elementName
//Start the timer
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += (sender, e) => Timer_Tick(sender, e, elementName, lastDoc_list);
dispatcherTimer.Interval = new TimeSpan(0, 0, 2);
dispatcherTimer.Start();
}
private static void Timer_Tick(object sender, EventArgs e, string elementName, List<string> lastDoc_list)
{
//Get the current list
var thisDoc = (HTMLDocument)Form.RosterBrowser.Document;
List<string> thisDoc_list = WebBrowserControl.GetWebData_RosterChoice(thisDoc, elementName);
//Compare lists
if (!thisDoc_list.SequenceEqual(lastDoc_list)) //With this function we compare the two lists
{
//HERE I WANT TO RESUME THE CODE IN CLASS A
dispatcherTimer.Stop();
}
else
{
//HERE WE DO NOTHING FOR NOW
}
}
}