긴 텍스트에 대한 다양한 통계를 얻기 위해 Word 추가 기능 (Word 2007, VS 2008)을 만들려고합니다. 통계 계산 기능은 별도의 클래스에 있으며 복잡하지는 않지만 시간이 많이 걸립니다. 계산은 내 추가 기능의 사용자 지정 작업 창 단추에서 시작하고 완료되면 동일한 CTP의 DataGridView 컨트롤에 표시됩니다. 이것은 계산이 수행되는 동안 Word가 차단된다는 것을 제외하면 잘 작동합니다. 긴 텍스트의 경우 시간이 걸릴 수 있습니다 (예 : 문서 800 개에 대해 ~ 10 초). 이 문제에 대한 몇 가지 이전 스레드를 읽고 BackgroundWorker를 사용하려고 시도했지만 도움이되지 않았습니다. Word는 stil 차단되었습니다. 여기에 내 현재 코드 :Word 2007 추가 기능 비동기 작업
private void btnAnalyze_Click(object sender, EventArgs e)
{
worker.RunWorkerAsync();
}
private void worker_DoWork(object sender, DoWorkEventArgs e)
{
e.Result = Tools.CalculateStatistics(
Globals.ThisAddIn.Application.ActiveDocument.Content.Text,
statOptions);
}
private void worker_RunWorkerCompleted(
object sender, RunWorkerCompletedEventArgs e)
{
gridResults.BeginInvoke(
new GridDelegate(RefreshGrid),
e.Result as List<Tools.StatResults>);
}
private void RefreshGrid(List<Tools.StatResults> list)
{
statList = list;
gridResults.DataSource = statList;
gridResults.Refresh();
}
작업자가 BackgroundWorker 구성 객체이며, gridResults는 DataGridView 컨트롤은, statList는 DataGridView에 대한 데이터 소스 일반적인 목록입니다. (내 추가 기능 usercontrol의 개인 회원입니다)
답변 해 주셔서 감사합니다. –