2012-04-16 12 views
8

यदि एक साथ विभिन्न ग्राहकों से एक से अधिक अनुरोध होते हैं तो हैंडलर के निष्पादन के दौरान Hub.Context.ConnectionId का मान बदल जाता है।सिग्नलआर में Hub.Context थ्रेड सुरक्षित है?

कहें कि मेरे पास क्लाइंट आईडी ए और बी के साथ 2 क्लाइंट जुड़े हैं, और मुझे अपने हब पर foo() नामक एक विधि मिली है। मैं ए से सर्वर से अनुरोध करने के लिए अनुरोध करता हूं foo(), फिर ए से अनुरोध को संसाधित किया जा रहा है, मैं बी invoking foo() से एक अनुरोध भेजता हूं। ए के अनुरोध की प्रसंस्करण की शुरुआत में Hub.Context.ConnectionId == ए लेकिन विधि कॉल के अंत में Hub.Context.ConnectionId == बी

क्या मुझे Hub.Context की प्रतिलिपि बनाना चाहिए? मुझे यह किस बिंदु पर करना चाहिए?

उत्तर

7

यह तो आप कुछ भी कॉपी की जरूरत नहीं है धागा सुरक्षित के बाद से केंद्र उदाहरणों स्थिर नहीं होते हैं होने की जरूरत नहीं है।

वे प्रति कॉल बनाए जाते हैं। इसलिए क्लाइंट से प्रत्येक कॉल एक नया हब इंस्टेंस और हबकॉन्टेक्स्ट बनाएगा।

+0

मैं आपको धन्यवाद देता हूं, मैं IHubActivator से एक ही हब लौट रहा था, अब मैंने इसे हर बार एक नया हब वापस करने के लिए बदल दिया है। –

0

यह सीधे आपके प्रश्न का उत्तर नहीं देता है, लेकिन मेरा सामान्य वर्कफ़्लो कॉलर पर एक मूल्य निर्धारित करना है जब वे पहली बार कनेक्ट हों, जो आपको चाहिए जो पूरा कर सकता है?

Caller.clientId = Guid.NewGuid(); 
संबंधित मुद्दे