Кажется, это должно быть так просто, но, очевидно, это не так.
У меня есть словарь, который должен загрузить ~ 40000 записей при запуске программы.
Это только задерживает время загрузки примерно на 5-7 секунд, но я бы хотел сделать это в фоновом режиме, чтобы избежать этого.
В приведенном ниже коде есть 3 раздела, которые касаются dictionary
и BackgroundWorker
, которые у меня есть в настоящее время.
Я знаю, что этот код относится к методу PopulateZipCodeDictionary()
, но по какой-то причине он фактически не запускает этот метод.
Что я делаю не так?
static BackgroundWorker populateZipCodeDictionary;
public MainWindow()
{
populateZipCodeDictionary = new BackgroundWorker();
populateZipCodeDictionary.DoWork += populateZipCodeDictionary_DoWork;
populateZipCodeDictionary.RunWorkerCompleted += populateZipCodeDictionary_RunWorkerCompleted;
populateZipCodeDictionary.RunWorkerAsync();
}
static void populateZipCodeDictionary_DoWork(object sender, DoWorkEventArgs e)
{
ZipCodes.PopulateZipCodeDictionary();
}
static void populateZipCodeDictionary_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
MessageBox.Show("Dictionary loaded");
}
static class ZipCodes
{
#region Methods
public static string GetValue(string key)
{
string result;
if (zipCodeDictionary.TryGetValue(key, out result))
{
return result;
}
else
{
return null;
}
}
#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" );
//Continues on adding ~40k entries...
}