У меня есть приложение на C # / Winforms, которое в основном используется для запуска тестирования учетных записей клиентов в определенном порядке / настройке.Все они выполняются в браузерах, и поэтому я построил его так, чтобы он автоматизировал процесс, поскольку при каждом открытии учетной записи клиента необходимо запускать около 10-12 тестов.
В основном, что происходит с вами?введите номер учетной записи, затем он запустит тесты.
Вот пример кода.
public void startTestProcess()
{
if (!cancelTests)
{
testRunning = true;
var tabPage = createTabPage(banToRun, Convert.ToInt32(banToRun));
loadingBox.Visible = true;
mainTabControl.TabPages.Insert(0, tabPage);
mainTabControl.SelectedTab = mainTabControl.TabPages[0];
runTest(tabPage, banToRun);
loadingBox.Visible = false;
}
}
private void runTest(TabPage t, string ban)
{
if (!cancelTests && !cancelCurrentOnly)
{
var tC = createInitialTabControl();
t.Controls.Add(tC);
int[] theTests = profileInfo.getSetList;
for (int i = 0; i < theTests.Length; i++)
{
if (!cancelTests && !cancelCurrentOnly)
{
var newTab = createTabPage(urlStrings.getName(theTests[i]), theTests[i]);
tC.TabPages.Add(newTab);
var webBrowser = createBrowser(urlStrings.getUrl(theTests[i], ban));
newTab.Controls.Add(webBrowser);
if (theTests[i] != 0 && theTests[i] != 1 && theTests[i] != 6
&& theTests[i] != 11 && theTests[i] != 12)
{
if (!webBrowser.IsDisposed)
{
try
{
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
}
catch
{
//Do Nothing
}
}
}
IntPtr pHandle = GetCurrentProcess();
SetProcessWorkingSetSize(pHandle, -1, -1);
}
}
}
if (cancelCurrentOnly)
{
cancelCurrentOnly = false;
}
banToRun = string.Empty;
testRunning = false;
}
Итак, в основном мой вопрос, как я могу оптимизировать то, что у меня есть, чтобы
A.Уменьшение задержки / зависания - Примечание. Уже реализован способ принудительного сбора мусора после каждого запуска теста.B. Возможно, улучшить производительность элементов управления WebBrowser?- Уже пробовал некоторые альтернативы веб-браузера, такие как WebKit для C # Wrapper (не работает на всех тестах из-за некоторого кодирования на основе ajax, я полагаю) C. Возможно, реализовывать многопоточные операции.Не уверен, как бы я поступил так, не выкинув перекрестные исключения.
Спасибо за вашу помощь.Если у вас есть другие вопросы, не стесняйтесь спрашивать.