簡體   English   中英

復制會話的線程

[英]Copy a session for a thread

我需要進行兩次具有相同數據的會話。 我該怎么做?

我的情況是:用戶在遍歷站點時已在會話中積累了一些數據。 他們單擊一個按鈕,現在我觸發一個線程來記錄我所擁有的。 不幸的是,我繼承的代碼傳遞了會話ID,並使用該ID來訪問數據。 更不幸的是,該記錄需要一些時間,因此用戶經常點擊其他頁面並弄亂我正在記錄的數據。

  • 用戶需要一個可以繼續玩的會話
  • 我的線程需要一個不會改變的會話

理想情況下,我能夠將會話數據復制到兩個會話中,每個會話一個。 我真的很想要一個能以某種方式給我這兩個會話的解決方案,因為重構代碼將是一場噩夢。 我意識到這幾乎是不可能的。 我能想到的最接近的方法是復制數據,使會話無效,為用戶重新創建它,然后將無效的會話ID傳遞給線程,並希望它沒有被清除,這不是我信任的計划。

如果沒有其他方法, 建議其他方法。 優先考慮重構的速度; 否則, 整體優雅。

有關實現的更多信息:線程觸發多個請求,包括會話ID,每個請求都基於會話中收集的數據生成每個會話的PDF,然后將其合並到主文檔中。

穿上鞋子,我將在會話中存儲一些數據對象。 當需要啟動線程來處理此數據時,可以克隆數據對象,而不是會話本身。 當然,您必須編寫一些代碼才能對此數據對象執行深層復制,但至少您的會話將只是包裝器(通常是會話)。

並且創建一個數據對象來存儲線程需要的所有數據會建立某種“契約”,因此,如果任何其他開發人員需要從該數據對象中添加或刪除任何內容,他/她將注意到深度復制方法必須是也已更新(希望如此)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM