C# 使用BackgroundWorker在WPF中的datagrid中使用多个导入按钮导入多个记录
要求: 允许用户导入多个记录并允许单击多个导入按钮(在DATAGRID中) 当用户单击单个导入按钮时,我能够处理导入按钮功能,但是如果用户单击另一个导入按钮,我就无法导入 下面是我的代码C# 使用BackgroundWorker在WPF中的datagrid中使用多个导入按钮导入多个记录,c#,wpf,datagrid,backgroundworker,C#,Wpf,Datagrid,Backgroundworker,要求: 允许用户导入多个记录并允许单击多个导入按钮(在DATAGRID中) 当用户单击单个导入按钮时,我能够处理导入按钮功能,但是如果用户单击另一个导入按钮,我就无法导入 下面是我的代码 BackgroundWorker bgWorkerUpdate = new BackgroundWorker(); // Constructor public ImportedKeywords() { bgWorkerUpdate.DoWork += new DoWorkEventHand
BackgroundWorker bgWorkerUpdate = new BackgroundWorker();
// Constructor
public ImportedKeywords()
{
bgWorkerUpdate.DoWork += new DoWorkEventHandler(bgWorkerUpdateDoWork);
bgWorkerUpdate.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bgWorkerUpdate_Completed);
}
private void Import_Click(object sender, RoutedEventArgs e)
{
if (!bgWorkerUpdate.IsBusy) bgWorkerUpdate.RunWorkerAsync(objSearchRequest);
else
{
bgWorkerUpdate = new BackgroundWorker();
bgWorkerUpdate.RunWorkerAsync(objSearchRequest);
}
}
public void bgWorkerUpdateDoWork(object sender, DoWorkEventArgs e)
{
SearchRequest objSearchRequest = (SearchRequest)e.Argument;//txtUserName.Text;
importCount = new AdvancedSearching().SearchContent(objSearchRequest, totalRecords, totalRecordsImported, recordsToImport, keywordID, selectedPriority);
}
void bgWorkerUpdate_Completed(object sender, RunWorkerCompletedEventArgs e)
{
imgLoading.Visibility = System.Windows.Visibility.Hidden;
if (importCount == 0)
{
lblMessage.Content = "No record found to import.";
lblMessage.Foreground = Brushes.DarkRed;
}
else
{
lblMessage.Content = importCount + " Record(s) imported successfully.";
lblMessage.Foreground = Brushes.DarkGreen;
BindList(Convert.ToInt32(tbStartPage.Text), txtSearch.Text, "test");
MaintainSortingWithPaging(Convert.ToInt32(tbStartPage.Text));
}
HideLoading();
}
创建
BackgroundWorker
的新实例时,必须再次订阅DoWork
和RunWorkerCompleted
事件。否则,当您运行它时,它不会做任何事情
if (!bgWorkerUpdate.IsBusy)
bgWorkerUpdate.RunWorkerAsync(objSearchRequest);
else
{
bgWorkerUpdate = new BackgroundWorker();
bgWorkerUpdate.DoWork += bgWorkerUpdateDoWork;
bgWorkerUpdate.RunWorkerCompleted+= bgWorkerUpdate_Completed;
bgWorkerUpdate.RunWorkerAsync(objSearchRequest);
}
但是,如果您只想在新线程中运行每个作业,而旧线程仍在运行,那么您可以研究其他构造,例如。如果我正在运行多个后台,那么它将如何工作。所有这些进口产品都能并行工作吗?如果不是的话,那么哪种方法才是正确的呢?好的,谢谢,我现在会和BackgroundWorker一起去:)如果有任何问题,我会给你回复:)