Ну, я думаю, что знаю ответ на этот вопрос, но я был бы признателен любому, кто подтвердил бы то, что я подозреваю.
У меня большой dictionary
почтовый индекс, который необходимо загрузить при запуске программы. Это занимает 10-15 секунд, и я хотел бы получить progressbar
, который мог бы показать прогресс. Я могу сделать индикатор выполнения, и у меня есть общее количество, указанное в качестве параметра. Но из того, что я нашел по другим вопросам, кажется, что dictionary.count
нельзя привязать к индикатору выполнения, если есть надежда на его регулярное обновление.
Это правда? И если так, есть ли другой способ обойти это?
Прямо сейчас словарь жестко запрограммирован, но я планирую изменить это в какой-то момент в будущем и вместо этого загрузить его из файла. Я знаю, что в этот момент я могу просто использовать цикл foreach
, чтобы обновлять счетчик каждый раз, но это кажется своего рода ошибкой. Есть ли лучший способ реализовать?
Изменить:
В соответствии с запросом, код, который загружает словарь zipCodes (на самом деле есть около 40 000 записей, но я решил сэкономить место: p):
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" );