問題:使用通用列表的方法需要很長時間才能處理。因此,該方法應該放在背景工作者的位置。BackgroundWorker:將通用列表傳遞給BackgroundWorker
問題如下:如何從Backgroundworker訪問泛型列表?
[Call]
backgroundWorker.RunWorkerAsync(new Tuple<string, int, List<T>>(aInfo, aCount, aGenericList));
...
[DoWork]
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
Tuple<string, int, List<T>> aTuple = (Tuple<string, int, List<T>>)e.Argument; // won't work as <T> is not known
...
}
我想這樣做
private void backgroundWorker_DoWork<T>(object sender, DoWorkEventArgs e, List<T> theList) where T : Interface
,但不知道這到底是怎麼被使用。
我錯過了一些明顯的東西嗎?
您可以將列表聲明爲全局變量。或者把它放到課堂範圍 – 2013-02-22 10:39:40
@GianAcuna作爲全球變量,我甚至會遇到如何創建它的問題。 '私人列表 aList;'不會編譯(因爲T不知道) –
Offler
2013-02-22 10:41:52
某處必須是已知的!當您調用RunWorkerAsync()時如何知道? –
2013-02-22 10:42:57