Можно ли получить доступ к списку SharePoint 2010, используя многопоточность в веб-части? - PullRequest
2 голосов
/ 24 ноября 2010

Я пытаюсь получить доступ к элементам в списке SharePoint 2010 из пользовательской веб-части. При использовании многопоточности свойство List.ItemCount является точным, но коллекция элементов пуста. Кто-нибудь нашел способ обойти это? Мой код для доступа к списку ниже:

    protected override void RenderContents(System.Web.UI.HtmlTextWriter writer)
    {
        Thread wThread = new Thread(new ThreadStart(WriteW));
        //only showing one thread for simplicity
        wThread.Start();
        Thread.Sleep(500);

        while (threadcount > 0)
        {
            Thread.Sleep(400);
        }
        lblGreeting.RenderControl(writer);

    }

    public void WriteW()
    {
        lock (lockobject)
        {
            threadcount++;
        }
        SPSite spsConflictSite = new SPSite("http://myserver/mysite");
        SPWeb spwConflictWeb = spsConflictSite.OpenWeb();
        SPList splConflictList = spwConflictWeb.Lists["Thread Tester List"];
        DataTable myTable = splConflictList.Items.GetDataTable();
            lblGreeting.Text += " " + myTable.Rows[0]["Title"].ToString();
            spsConflictSite.Dispose();
        lock (lockobject)
        {
            threadcount--;
        }
    }

1 Ответ

0 голосов
/ 19 ноября 2011

Я думаю, что использование Dispose в теме может быть проблемой.Попробуйте обернуть вызов SPSite в оператор using, чтобы вернуть .net некоторый контроль над утилизацией.У меня работала многопоточность в SP2010, но это была свинья, и у нее было много «незапланированных функций».

В то время мне звонили в службу поддержки с Microsoft, и они ответили, что это возможноне поддерживается.

...