c 等待事件觸發 類似c 的WaitForSingleObject

2025-03-19 13:10:06 字數 4969 閱讀 8470

1樓:網友

/ 初始的時候,設定為false

manualresetevent mre = new manualresetevent(false);

你的執行緒。private void mythread( )/ 等待10毫秒,檢查 mre是否設定為true。如果沒有,繼續迴圈。

while(!

兄判槐 //

在主執行緒中。

static void main()

設定 mrs為衝簡true,通知執行緒終止。

羨友 )

2樓:網友

c# 為 manualreseteventmanualresetevent mre=new manualresetevent(false);

再while迴圈橋盯中。

等待500ms,如果mre調缺凱用set 返回乙個bool值 根據bool值來結束迴圈。

如果要停伏消喚止迴圈 就在外表;

c#中有沒有類似c++的模態對話方塊,彈出之後可以通過靜態框輸入內容,設定之後繼續執行的?

3樓:荔菲彭澤

winform吧?

winform裡不專門區別對話方塊和視窗。

呼叫視窗的showdialog()方法就是以模態方式顯示;呼叫show()顯示就是非模態的。

大概呼叫模式是這樣:

form1 frm = new form1();

if (= // 如果選擇了"確定"

showdialog()的返回值實際上就是屬性的值。這個值要你自己在form1的**里根據情況設定。比如使用者選擇了「確定」就把它設定為;如果選擇的是「取消」就設定為。

當然你也可以自己設定乙個屬性來反映使用者的選擇結果,但是就不能融合到showdialog()方法中去了。

其他設定也是這樣通過對話方塊的屬性來報告。比如你這個對話方塊的作用是輸入使用者名稱和密碼,你就在你的對話方塊裡面公開兩個屬性:username,password,在對話方塊的**裡給他們賦值。

呼叫方就通過讀取這些屬性的值來獲取對話方塊的設定。

form1 frm = new form1();

if (=,密碼是",/ ,;

你也可以傳遞乙個資料結構的引用到對話方塊裡,然後填充這個資料結構來獲取對話方塊設定。不過。net裡通常是像上面說的那樣直接把對話方塊的設定公開為屬性。

c++中使函式等待一段再執行時間有什麼api可用?

4樓:救贖削腎客

閱歷尚淺,不知道有這樣的api

但是你可以用其他方法代替。

給這個函式加個引數,這個引數當個看門狗(標誌位)flag當flag=1的時候執行這個函式,不等於1的時候跳過「當下次接收同樣的命令後這段時間延長」這裡的命令就可以用來當flag,但是時間延長的情況你要自己處理了,

5樓:網友

sleep會假死,不響應系統訊息處理的;

我們一般辦法:用迴圈處理訊息並檢查時間到了沒有;

求乙個c#事件處理範例。

6樓:網友

public delegate void myeventhandler(object sender,eventargs e);

public class a

public class b

private void a_myevent(object sender,eventargs e)}}

以上**實現a中自定義事件,在私有方法doevent中觸發該事件,b中包含對a例項的引用,並訂閱該事件。則當a觸發該事件時,b的例項將執行a_myevent(object sender,eventargs e)方法。a需要傳過去的事件引數就在觸發該事件時的myevent(this,null)來實現。

純手寫,未排版。

7樓:網友

winform中的按鈕點選,form面載入,都是事件處理的範例,而且絕對專業。

可以自己試試,理解的更深刻。

c#委託與事件問題

8樓:匿名使用者

事件是特殊的委託!你就把委託想成是裡面儲存乙個方法的引用就可以了!開始時候比較抽象!慢慢會體會的!

9樓:匿名使用者

引數一定要一樣才可以。

c#如何等待cmd命令結束

10樓:網友

為什麼一定要用cmd呢?

你直接用c#的類庫不行麼?

如果你呼叫cmd的功能來執行的話,要比你直接用還難於控制啊。

c++waitforsingleobject()疑問

11樓:塞班狂

是的,但是waitforsingleobject這個函式你也可以在另外乙個執行緒執行,這樣主執行緒不會阻塞。

12樓:網友

是的,子執行緒要改變為激發態,只有在它結束的時候。

c# 中 委託 和c++中 **的區別是什麼

13樓:網友

1、c#中。委託可以實現**。。執行緒安全的一種實現方式。c#中,事件也是委託。

2、委託是一種引用方法的型別。一旦為委託分配了方法,委託將與該方法具有完全相同的行為。委託方法的使用可以像其他任何方法一樣,具有引數和返回值,如下面的示例所示:

c#public delegate int performcalculation(int x, int y);

與委託的簽名(由返回型別和引數組成)匹配的任何方法都可以分配給該委託。這樣就可以通過程式設計方式來更改方法呼叫,還可以向現有類中插入新**。只要知道委託的簽名,便可以分配自己的委託方法。

將方法作為引數進行引用的能力使委託成為定義**方法的理想選擇。例如,可以向排序演算法傳遞對比較兩個物件的方法的引用。分離比較**使得可以採用更通用的方式編寫演算法。

委託概述。委託具有以下特點:

委託類似於 c++ 函式指標,但它是型別安全的。

委託允許將方法作為引數進行傳遞。

委託可用於定義**方法。

關於c#委託和事件的問題:剛學了委託和事件 ,不理解其中的概念 ,求解

14樓:網友

當使用者單擊控制項,或者滑鼠停留在某個區域,將產生乙個事件,事件由控制項類或視窗類提供,例如button類當按鈕按下時發出通知。

為了程式設計方便,常將引發事件的程式放在單獨的模組或者元件,元件通常是乙個類。例如控制項類或視窗類都是單獨的類。當發生事件時,傳送類(或稱控制項類)將事件通知主程式類或接受類,並傳遞有關的引數。

執行通知的手段是繫結乙個方法,接受類將方法繫結到傳送類的事件,當傳送類發事件時,接受類中繫結到事件的方法被執行。

事件是委託型別,可以採用加法賦值運算子+=將方法和事件繫結。你可以檢視winform程式的,裡面的控制項處理程式都是+=符號繫結事件處理程式。接收類必須具有與事件相同簽名(如委託簽名)的方法。

然後,該方法(稱為事件處理程式)可以採取適當的操作來響應事件。但是程式設計員不需要事先費力地在接受類構造繫結事件的方法,當輸入符號+=時,程式設計系統提示按tab鍵自動新增繫結方法的名稱,第二次按tab鍵自動新增方法的引數,並與傳送類的委託簽名一致。

net framework中事件的簽名,通常第乙個引數為引用事件源的物件,第二個引數為乙個傳送與事件相關的資料的類。但是在c#語言中並不強制使用這種形式,只要事件簽名返回void,其他方面可以與任何有效的委託簽名一樣。

關鍵字event宣告事件。委託是事件的基礎,事件的型別必須是委託型別,因此宣告事件前先宣告委託。乙個簡單的例子如下:

public delegate void handler

class test

public event handler onclick;

這裡先在類的外部宣告委託handler,然後在類的內部用關鍵字event宣告事件,也可以在類的內部宣告委託。onclick是handler型別,由委託handler**事件的實現,封裝乙個方法實現事件。

委託返回型別必須是void,但可以帶有引數,例如:

public delegate void testeventdelegate(object sender, e);

事件和方法一樣具有簽名,簽名包括名稱和引數列表。事件的簽名通過委託型別來定義,委託的引數列表就是事件的列表。

因篇幅有限,不能舉例說明,請看我的部落格,在網頁欄目搜163部落格danyaody,第3章例3-14。

15樓:

說通俗一點,介面是類的規範,那麼委託可以理解為方法的一種規範,只要符合這個委託的規範的方法,都可以通過這個委託去執行這類方法,只要把方法註冊到這個委託就行了。

事件就是在委託之上的,事件一旦觸發,那麼所有註冊到這個的事件都會通過委託去執行。

這個只是我個人的理解,你最好是多做例項,然後慢慢形成自己的理解方式。

16樓:匿名使用者

for example:2003

new ;

這就是定義的乙個委託。

這這裡,委託的作用就是讓動作和事件聯絡起來,事件的執行都是通過委託來實現的。

委託在多執行緒程式設計,定義事件,事件處理函式中使用。委託可以看作封裝以前c++中的函式指標的一些資訊,在型別上更安全。它是執行緒上的呼叫,可以不理會呼叫事件是否成功執行。

另外,站長團上有產品**,便宜***。

17樓:網友

委託是函式指標(位址)的乙個強型別的封裝,事件可以看做是乙個特殊的受限制的委託例項,只能用+= -=來操作。理論上,事件可以實現的,委託肯定可以的。在平常應用中,委託用域**函式,事件用來做外發介面。

不明白的,可以繼續追問。

18樓:網友

簡單的說就是:

接力賽跑,等傳遞者將接力棒給你的同時,你就要立即開始繼續跑步(但是在接力棒到達你這邊的時候,你就一直在等待著傳遞者的到來),完成整個比賽的過程。

c是怎麼回事,C 中的事件 怎麼回事?

通俗的說,事件就是能引發一些方法的操作,完全可以這樣理解,不要想得太複雜 估計你太懶,這些知識很多教程都有得講。這到底是怎麼回事,c 點選解決方案資源管理器裡面form1.cs前面的小箭頭,開啟下面的form1.designer.cs 搜尋form1 load,找到這行刪除即可 你的提示資訊裡面已經...

用C語言編寫類似計算器的程式,用C語言編寫一個類似計算器的程式

note your choice is c ide include stdio.h include stdlib.h include ctype.h int n 0 char record 20 float product float change float muli return summ fl...

C 懂原理的來答。關於事件,呼叫傳值等問題。

可以呼叫。舉個小例子,窗體放個按鈕個文字框。private void button click object sender,eventargs e 被點選了 button click sender,e private void button click object sender,eventargs...