Ну, я думаю, я знаю ответ на этот вопрос, но я был бы признателен, если кто-нибудь подтвердит то, что я подозреваю.ProgressBar, который обновляется как словарь, загружается
У меня есть большой dictionary
почтовых индексов, которые необходимо загрузить при запуске программы. Это займет от 10 до 15 секунд, и я хотел бы иметь progressbar
, который мог бы показать, ну, прогресс. Я могу сделать индикатор выполнения, и у меня есть общее количество, указанное как настройка. Но из того, что я нашел по другим вопросам, кажется, что dictionary.count
не может быть привязан к панели прогресса с любой надеждой на ее обновление регулярно.
Это правда? И если так, есть ли другой способ?
В настоящее время словарь жестко запрограммирован, но я планирую изменить его в какой-то момент в будущем и загрузить его из файла. Я знаю, что в этот момент я могу просто использовать цикл foreach
, чтобы обновлять счет каждый раз, но это похоже на kludge-ish. Есть ли лучший способ реализовать?
Edit:
В соответствии с просьбой, код, который загружает словарь Почтовые индексы (фактически существует около 40 000 записей больше, но я думал, что сэкономить место: р):
static class ZipCodes
{
#region Methods
public static string GetValue(string key)
{
string result;
if (zipCodeDictionary.TryGetValue(key, out result))
{
return result;
}
else
{
return null;
}
}
public static int GetCount()
{
return zipCodeDictionary.Count();
}
#endregion
#region ZipCode Dictionary Definition
static Dictionary<string, string> zipCodeDictionary = new Dictionary<string, string>();
public static void PopulateZipCodeDictionary()
{
zipCodeDictionary.Add("00501", "Holtsville, NY");
zipCodeDictionary.Add("00544", "Holtsville, NY");
zipCodeDictionary.Add("00601", "Adjuntas, PR");
zipCodeDictionary.Add("00602", "Aguada, PR");
zipCodeDictionary.Add("00603", "Aguadilla, PR");
zipCodeDictionary.Add("00604", "Aguadilla, PR");
Просто перемещайте во время загрузки словаря. Получите общую сумму, которую она будет загружать, а затем покажите ход каждые 1 секунду, разделив ток с общей. –
Мне было бы любопытно посмотреть, что код, который вы используете для загрузки почтовых индексов. Не имеет смысла, что это займет 10-15 секунд. Если бы я был вами, я бы посмотрел на это, прежде чем пытаться реализовать индикатор выполнения. –
вместо загрузки его в словарь, вы должны рассмотреть его загрузки в DataTable или что-то другое. обычно zip-коды будут храниться в таблице базы данных и запрашиваться с использованием sql. он, вероятно, загрузит все в памяти быстрее, чем все, что вы делаете. – Timmerz