可能重複:
WCF Windows Service - Long operations/Callback to calling module線程在WCF basicHttpBinding的
我必須託管在Windows服務WCF應用程序。我必須使用basicHttpBinding。在應用程序中,我對數據進行長期分析,然後將其轉化爲客戶。
是否有可能調用WCF創建一個將執行分析的線程(該線程的Id將被髮送到客戶端)?
客戶端應該能夠與使用傳輸ID的主題進行通信,並且如果它接收到數據已準備好的信息,則應該能夠下載它。這將反過來釋放線程。
如何實現此功能?
好的。有用。客戶端方法調用創建一個線程,即使在支付guid後臺運行並保存操作的結果。如何最好地存儲這些結果?由於該服務正在運行每次調用字典重置與每個調用該服務的事實。聲明靜態數據可以被覆蓋,但我認爲這不是一個好主意。有任何想法嗎?
namespace WCFRiskService
{
[ServiceContract]
public interface IRiskService
{
// return Thread ID
[OperationContract]
int GetAnalysis(AnalysisId);
[OperationContract]
string GetAnalysisData(int ThreadId);
}
public class Analysis
{
public GenerateAnalysis()
{
Thread.Sleep(20000);
Analysis = "Generated Data";
}
}
public class RiskService : IRiskService
{
// How can I change this, to use non-static objects ?
static string AnalysisData = "";
public string GetAnalysisData(int ThreadId);
{
return AnalysisData;
}
public int GetAnalysis(AnalysisId);
{
Analysis AObject = new Analysis();
AObject.Tree = AnalysisTree;
Thread workerThread = new Thread(AObject.GenerateAnalysis);
int managedThreadId = workerThread.ManagedThreadId;
workerThread.Start();
while (!workerThread.IsAlive) ;
return managedThreadId;
}
}
}
我不知道該怎麼去做。我只想使用basicHttpBinding的WCF應用程序,以便從服務的所有請求共有的線程中受益,並在必要時終止線程。 –