是否可以在Web部件中使用多线程访问SharePoint 2010列表?

时间:2010-11-23 21:57:09

标签: c# multithreading list sharepoint-2010 web-parts

我正在尝试从自定义webpart访问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 :(得分:0)

我认为在线程中使用Dispose可能是个问题。尝试在使用语句中包装SPSite调用,以便.net重新控制处理。我在SP2010上工作过多线程,但它是一头猪,有很多“计划外功能”。

我确实在当时打开了微软打开的支持电话,他们的答案是应该可以但不受支持。