여기에서 발생하는 수명주기를 이해하려고합니다. 항목 ID를 가져 와서 목록에 쓸 수있는 asp 목록보기가 있습니다. 내 목록이 방법 후C# 단추를 클릭 한 후 항목이 비어 있음
private List<int> CurrentList = new List<int>();
외부에서 정의
protected void ShareWith_OnItemBound(object sender, ListViewItemEventArgs e)
{
if (!IsPostBack)
{
if (e.Item.ItemType == ListViewItemType.DataItem)
{
ListViewDataItem currentItemId = (ListViewDataItem)e.Item;
System.Web.UI.WebControls.DataKey currentDataKey = this.lvShareWithPanel.DataKeys[currentItemId.DataItemIndex];
int FriendId = Convert.ToInt32(currentDataKey["SharedUserId"]);
CurrentList.Add(FriendId);
}
}
}
, 사용자는 계속하여 ASP 버튼을 클릭하여 목록에 새로운 항목을 추가합니다. 현재 목록과 새로운 목록을 비교하고 있지만 버튼 클릭 후 디버그를 관찰하면 목록 "CurrentList"가 비어 있습니다. 어떤 방법 밖에있는 목록이 영향을받는 이유는 무엇입니까?
CurrentList를 static으로 선언했는지 확인하십시오. 이게 작동하는지 알려주세요. – mihirj
@mihirj 나쁜 조언이야! ASP.NET은 다중 스레드 환경이며 모든 스레드에서 정적 필드를 공유합니다. 목록을 정적으로 정의한 – thorn
이 작동했습니다. 멀티 스레딩에 대해 많이 알지 못하기 때문에이를 수행 할 때 발생할 수있는 반향은 무엇입니까? –