簡體   English   中英

服務器端事件與ASP.NET的混淆

[英]Server side event confusion with ASP.NET

我正在嘗試創建一個網頁,允許用戶使用ASP.NET從連接到服務器的攝像機捕獲圖像。 攝像頭是一個奧林巴斯,服務器端代碼可以訪問攝像頭SDK中的所有同步調用。
當我嘗試捕獲圖像時會出現問題。
它在SDK中的工作方式是,您首先告訴相機拍攝圖像,然后將偵聽器添加到由相機觸發的事件中,然后在完成捕捉圖像后開始從相機下載圖像。
該事件從未觸發,因此我目前無法從相機下載圖像。
將偵聽器綁定到功能並告訴相機拍照的代碼位於按鈕的服務器端代碼內。
從本質上講,我想知道如何為服務器上發生的更改提供事件監聽器,例如所連接攝像頭的狀態。

我希望您對此有疑問。 例如,我敢打賭,攝像頭假定它一次被一個桌面應用程序使用。 從Web應用程序調用它是完全不同的,因為每個請求可能來自不同的用戶,並且可能與相機已經發生的事情無關。

我建議您通過Windows服務與相機通信。 該服務將通過Windows服務中托管的WCF服務與Web應用程序進行通信。 它會告訴相機拍攝圖像,並將其附加到事件上。 事件觸發時,它將從相機下載圖像並將其返回給Web服務的調用者。

WCF服務可能必須確保一次只有一個用戶在使用相機。 如果攝像頭已經在使用中,則必須拒絕通話。

服務器端事件捕獲可能會有些棘手。 自從我這樣做以來已經有一段時間了,所以我完全是用模糊的記憶來寫的……

從頁面類附加到服務器端事件會導致該類的生命周期出現問題。 交付頁面后,該類的實例將不在范圍內,因此,您分配給攝像機的任何事件處理程序也將不在范圍內。 我們使用兩種不同的機制來處理此問題。

A)為事件處理程序分配一個靜態方法。 靜態方法不綁定到類的特定實例,並且即使頁面實例不再在作用域內也將持久存在。

B)在GLOBAL類中分配一個方法,以捕獲Application(或會話)_Start事件上的事件。 這也將事件處理程序也保留在頁面類的范圍之外。

在這兩種情況下,您的事件處理程序都需要設置一些標志,該標志可以全局讀取以指示圖像已准備就緒,您的頁面將需要輪詢頁面(或處理程序)或刷新以找出圖像是否准備就緒。

您還需要查看相機的API類實例化的范圍。 如果該類被實例化為該頁面的類的成員,則在頁面完成其操作后,它會從地球上掉下來,並且事件不會引發。 攝像機類將需要是靜態的,全局的或派生到另一個獨立的線程。

希望我霧蒙蒙的水草幫忙。 祝好運。

暫無
暫無

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

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