PENANGANAN DEADLOCK DALAM SISTEM OPERASI

a. Model Deadlock

• Meminta (request): meminta layananperangkat masukan/keluaran.
• Memakai (use): memakai perangkat masukan/keluaran.
• Melepaskan (release): melepaskan pemakaian perangkat masukan/keluaran.

Model Deadlock
a. Deadlock Problem
Apa itu deadlock?
Analogi :
Traffic stuck, antrian kendaraan yang saling menunggu Menunggu keadaan yang tidak akan pernah terjadi kebuntuan.


b. Karakteristik Deadlock

Situasi deadlock dapat terjadi bila terdapat 4 kondisi yang berjalan serentak pada sistem. Mutual Exclusion Sebuah resource hanya dapat digunakan oleh sebuah proses pada suatu waktu tertentu. (resource yang non- shareable.) Hold and Wait terdapat proses yang sedang menunggu dan memegang resource.

c. Karakteristik Deadlock (cont.)

- Non-preemption
Resource tidak dapat digunakan sebelum proses yang menggunakan telah selesai menggunakan dan kemudian melepaskannya.


2
- Circular wait : Proses-proses berada dalam lingkaran. Terjadi saling menunggu resource yang sedang digunakan oleh proses berikutnya dalam lingkaran tersebut.

- Model Sistem

Menurut Coffman dalam bukunya "Operating System" menyebutkan empat syarat bagi terjadinya deadlock, yaitu:

i. Mutual Exclusion
Suatu kondisi dimana setiap sumber daya diberikan tepat pada satu proses pada suatu waktu.

ii. Hold and Wait
Kondisi yang menyatakan proses-proses yang sedang memakai suatu sumber daya dapat meminta sumber daya yang lain.

iii. Non-pre-emptive
Kondisi dimana suatu sumber daya yang sedang berada pada suatu proses tidak dapat diambil secara paksa dari proses tersebut,sampai proses itu melepaskannya.

iv. Circular Wait
Kondisi yang menyatakan bahwa adanya rantai saling meminta sumber daya yang dimiliki oleh suatu proses oleh proses lainnya.

Syarat Langkah Kelemahan
-Mutual Exclusion Spooling: sumber daya Dapat menyebabkan chaos :
-Hold and Wait : Meminta sumber daya di awal Sulit memperkirakan di awal dan tidak optimal


3
-No Pre-emptive : Mengambil sumber daya di tengah proses Hasil proses tidak akan baik
-Circular Wait: Penomoran permintaan sumber daya Tidak ada penomoran yang memuaskan semua pihak

d. Penyebab Deadlock

• Mutual Exclusion
Meniadakan MUTEX
• Masalah pada teknik ini: – Tidak setiap resource eksklusif dapat di spooling.
– Kompetisi terhadap ruang disk dan spooling dapat menuntun ke arah deadlock

• Hold and Wait
Meniadakan Syarat Hold & Wait
• Mengalokasikan semua resource atau tidak sama sekali
• Masalah: –Sukar mengetahui lebih dulu semua resource yg diperlukan suatu proses.
• Cara ini dapat menjadi sangat tidak efisien.
• Hold & Release
• Circular Waiting
Circular Wait
• Contoh Circular Wait
• No Preemption

Meniadakan Kondisi
Non-Preemption
• Non preemption mencegah proses2 lain harus menunggu.
• Masalah: – Saat proses A menulis ke printer, tiba-tiba dihentikan proses B yang juga akan menulis ke printer yang sama. Bila dimungkinkan kondisi preemption ini maka kedua proses akan mencetak secara tak benar.

4

e. Pencegahan deadlock

• Tiap proses harus memintar semua sumber daya yang diperlukan sekaligus dan tidak berlanjut sampai semuanya diberikan
• Jika proses telah sedang mememgang resource tertentu, untuk permintaan berikutnya proses harus melepas dulu resource yg dipegangnya.
• Beri pengurutan linear terhadap resource pada semua proses

Strategi menghadapi Deadlock
Strategi untuk menghadapi deadlock dapat dibagi menjadi tiga pendekatan, yaitu:
i. Mengabaikan adanya deadlock.
ii. Memastikan bahwa deadlock tidak akan pernah ada, baik dengan metode Pencegahan, dengan mencegah empat kondisi deadlock agar tidak akan pernah terjadi. Metode Menghindari deadlock, yaitu mengizinkan empat kondisi deadlock, tetapi menghentikan setiap proses yang kemungkinan mencapai deadlock.
iii. Membiarkan deadlock untuk terjadi, pendekatan ini membutuhkan dua metode yang saling mendukung, yaitu:

Pendeteksian deadlock,
untuk mengidentifikasi ketika deadlock terjadi.

Pemulihan deadlock,
mengembalikan kembali sumber daya yang dibutuhkan pada proses yang memintanya.






5
f. Strategi mengatasi Deadlock

1. Prevention : memastikan paling sedikit satu penyebab Deadlock tidak berlaku.
Prevention


• Mutual Exclusion : membuat file spool untuk resource yang digunakan bersama-sama
• Hold and Wait : memaksa sebuah proses untuk melepaskan resource yang dimilikinya ketika meminta resource baru
• Circular Waiting : memberikan penamaan resource berdasarkan urutan atau level
• No Preemption : membolehkan adanya preemption.

2. Avoidance : sistem menolak request terhadap resource yang berpotensi deadlock,
Algoritma Banker.
Avoidance
• Resource manager menolak proses yang meminta resource yang berpotensi deadlock.
• Jika ada permintaan resource yang maksimum digunakan, maka proses tersebut akan dipaksa untuk melepaskan resource yang sudah dimiliknya.
• Perlu adanya informasi tambahan.
Algoritma Banker
• Didasarkan pada kondisi bank, dimana konsumen meminjam sejumlah uang, lalu meminta pinjaman uang lagi
• Proses dan resource dimodelkan dalam satu tabel

A 3 0 1 1 A 1 1 0 0
B 0 1 0 0 B 0 1 1 2
C 1 1 1 0 C 3 1 0 0
D 1 1 0 1 D 0 0 1 0
E 0 0 0 0 E 2 1 1 0
6
3. Detection and Recovery : membiarkan Deadlock terjadi, lalu mendeteksinya, kemudian melakukan recovery, Algoritma Ostrich.
Detection dan Recovery
• Membiarkan deadlock terjadi lalu mendeteksinya kemudian melakukan tindakan recovery seperlunya
• Algoritma yang paling dikenal adalah algoritma Ostrich
• Tindakan recovery yang dilakukan adalah : melakukan preemption, membuat checkpoint untuk rollback lalu membunuh proses yang prioritasnya kecil.
Dari penjabaran pendekatan diatas, terdapat empat metode untuk mengatasi deadlock yang akan terjadi, yaitu:

Strategi Ostrich

Pendekatan yang paling sederhana adalah dengan menggunakan strategi burung unta: masukkan kepala dalam pasir dan seolah-olah tidak pernah ada masalah sama sekali. Beragam pendapat muncul berkaitan dengan strategi ini. Menurut para ahli Matematika, cara ini sama sekali tidak dapat diterima dan semua keadaan deadlock harus ditangani. Sementara menurut para ahli Teknik, jika komputer lebih sering mengalami kerusakkan disebabkan oleh kegagalan hardware, error pada kompilator atau bugs pada sistem operasi. Maka ongkos yang dibayar untuk melakukan penanganan deadlock sangatlah besar dan lebih baik mengabaikan keadaan deadlock tersebut. Metode ini diterapkan pada sistem operasi UNIX dan MINIX.

g. Pengendalian Deadlock

Mengabaikan, menganggap bahwa deadlock tidak akan pernah terjadi. Membiarkan terjadinya deadlock, lalu kemudian segera diperbaiki/recover. Menggunakan protokol untuk meyakinkan bahwa sistem tidak akan pernah deadlock.


7
h. Mendeteksi dan memperbaiki Deadlock

Mendeteksi apabila dalam sebuah proses terjadi kondisi yang mengarah ke circular wait. Apabila deadlock terjadi tentukan proses mana saja yang terlibat.Setelah deadlock terdeteksi, biarkan proses yang mengalami deadlock selesai menggunakan resource, agar resource bisa digunakan. Atau stop semua proses yang terlibat deadlock.

CREBAS ORACLE VERSI 10g TENTANG ASISTEN DOSEN

/*==============================================================*/
/* DBMS name: ORACLE Version 10g */
/* Created on: 12/05/2010 10:23:09 */
/*==============================================================*/


alter table ASISTEN_DOSEN
drop constraint FK_ASISTEN__MENGATUR_RUANG_LA;

alter table PRAKTIKAN
drop constraint FK_PRAKTIKA_MENCATAT_ASISTEN_;

alter table PRAKTIKAN
drop constraint FK_PRAKTIKA_MENDAFTAR_RUANG_LA;

drop index MENGATUR_FK;

drop table ASISTEN_DOSEN cascade constraints;

drop index MENDAFTAR_FK;

drop index MENCATAT_FK;

drop table PRAKTIKAN cascade constraints;

drop table RUANG_LAB_PRAKTIKUM cascade constraints;

/*==============================================================*/
/* Table: ASISTEN_DOSEN */
/*==============================================================*/
create table ASISTEN_DOSEN (
NPM_ASISTEN_DOSEN INTEGER not null,
ID_PRAKTIKUM VARCHAR2(10),
NAMA_ASISTEN_DOSEN VARCHAR2(35) not null,
KELAS_ASISTEN_DOSEN VARCHAR2(15) not null,
constraint PK_ASISTEN_DOSEN primary key (NPM_ASISTEN_DOSEN)
);

/*==============================================================*/
/* Index: MENGATUR_FK */
/*==============================================================*/
create index MENGATUR_FK on ASISTEN_DOSEN (
ID_PRAKTIKUM ASC
);

/*==============================================================*/
/* Table: PRAKTIKAN */
/*==============================================================*/
create table PRAKTIKAN (
NPM_PRAKTIKAN INTEGER not null,
ID_PRAKTIKUM VARCHAR2(10),
NPM_ASISTEN_DOSEN INTEGER,
NAMA_PRAKTIKAN VARCHAR2(35) not null,
PARALEL_PRAKTIKAN VARCHAR2(15) not null,
constraint PK_PRAKTIKAN primary key (NPM_PRAKTIKAN)
);

/*==============================================================*/
/* Index: MENCATAT_FK */
/*==============================================================*/
create index MENCATAT_FK on PRAKTIKAN (
NPM_ASISTEN_DOSEN ASC
);

/*==============================================================*/
/* Index: MENDAFTAR_FK */
/*==============================================================*/
create index MENDAFTAR_FK on PRAKTIKAN (
ID_PRAKTIKUM ASC
);

/*==============================================================*/
/* Table: RUANG_LAB_PRAKTIKUM */
/*==============================================================*/
create table RUANG_LAB_PRAKTIKUM (
ID_PRAKTIKUM VARCHAR2(10) not null,
PARALEL_RUANG_LAB_PRAKTIKUM VARCHAR2(55),
TANGGAL_PRAKTIKUM DATE,
JADWAL_RUANG_LAB_PRAKTIKUM VARCHAR2(55),
PRAKTIKUM VARCHAR2(50),
constraint PK_RUANG_LAB_PRAKTIKUM primary key (ID_PRAKTIKUM)
);

alter table ASISTEN_DOSEN
add constraint FK_ASISTEN__MENGATUR_RUANG_LA foreign key (ID_PRAKTIKUM)
references RUANG_LAB_PRAKTIKUM (ID_PRAKTIKUM);

alter table PRAKTIKAN
add constraint FK_PRAKTIKA_MENCATAT_ASISTEN_ foreign key (NPM_ASISTEN_DOSEN)
references ASISTEN_DOSEN (NPM_ASISTEN_DOSEN);

alter table PRAKTIKAN
add constraint FK_PRAKTIKA_MENDAFTAR_RUANG_LA foreign key (ID_PRAKTIKUM)
references RUANG_LAB_PRAKTIKUM (ID_PRAKTIKUM);

ERD

Model ERD atau Conceptual Data Model (CDM) : model yang dibuat berdasarkan anggapan bahwa dunia nyata terdiri dari koleksi obyek-obyek dasar yang dinamakan entitas (entity) serta hubungan (relationship) antara entitas-entitas itu.
Model Relasional atau Physical Data Model (PDM) : model yang menggunakan sejumlah tabel untuk menggambarkan data serta hubungan antara data-data tersebut. Setiap tabel mempunyai sejumlah kolom di mana setiap kolom memiliki nama yang unik.

Relasi-relasi :

Relasi satu :
Entity 1 to entity 2 : kardinalitas : one to many dengan detail minimal 0 dan maksimalnya banyak. Dependensi : entitas 1 dan entitas 2 tidak saling ketergantungan.
Entity 2 to entity 1 : kardinalitas : many to one dengan detail minimal 1 dan maksimalnya 1. Dependensi : entitas 1 dan entitas 2 tidak saling ketergantungan.
Relasi dua :
Entity 3 to entity 4 : kardinalitas : one to many dengan detail minimal 0 maksimalnya banyak. Dependensi : entitas 3 dan entitas 4 tidak saling ketergantungan.
Entity 4 ke entity 3 : kardinalitas : many to one dengan detail minimal 1 maksimal 1. Dependensi : entitas 4 dan entitas 3 tidak saling ketergantungan.
Relasi tiga
Entity 5 to entity 6 dan Entity 6 to entity 5 : kardinalitas : one to one dengan detail minimal 0 maksimalnya 1. Dependensi : entitas 5 dan entitas 6 tidak saling ketergantungan.
Relasi empat
Entity 7 to entity 8 : kardinalitas : one to one dengan detail minimal 0 maksimalnya 1. Dependensi : entitas 7 dan entitas 8 tidak saling ketergantungan.
Entity 8 ke entity 7 : kardinalitas : one to one dengan detail minimal 1 maksimal 1. Dependensi : entitas 8 dan entitas 7 tidak saling ketergantungan.
Relasi lima
Entity 9 to entity 10 : kardinalitas : many to many dengan detail minimal 0 maksimalnya banyak. Dependensi : entitas 9 dan entitas 10 tidak saling ketergantungan.
Entity 10 ke entity 9 : kardinalitas : many to many dengan detail minimal 1 maksimal banyak. Dependensi : entitas 10 dan entitas 9 tidak saling ketergantungan.
Relasi enam
Entity 13 to entity 14 : kardinalitas : one to many dengan detail minimal 0 maksimalnya banyak. Dependensi : entitas 13 menjadi parent dari entitas 14.
Entity14 ke entity 13 : kardinalitas : many to one dengan detail minimal 1 maksimal 1. Dependensi : entitas 14 tergantung kepada entitas 13.

Normalisasi adalah proses penyusunan data untuk mengurangi terjadinya duplikasi dan inkonsistensi.
* First Normal Form (1NF) : tidak boleh ada kelompok yang berulang pada tabel, penguraian atribut multivalued dan composit.

VB. NET

Visual basic merupakan perangkat lunak event diven programming artinya pemograman yang dituliskan berdasarkan event tertentu . event yang dimiliki tergantung pada jenis komponennya,misalnya untuk komponen tombol memiliki event klik yang artinya yang terjadi event yang dilakukan klik terhadap tombol tersebut.komponen text memiliki event keypres yang berarti terjadi event penekanan tombol terhadap keyboard.
Setiap event yang terjadi di iikuti dengan terjadinya action atau tindakan ,dengan disilah kita dapat menuliskan programnya. Misalnya (command button) memiliki event clik yang isinya : satu baris program yang isinya :satu baris program yaitu end. Dengan perintah end maka menyebabkan progam akan keluar dan kembali ke visual basic.penambahan komponen dasar untuk melakukan operasi terhadap data yaitu kompoen texbox, label dan commond button, dengan komponen textbox kita bisa menmpilkan data yang ada pada label atau penampilan hasil dari suatu pencarian data
menambahkan komponen pada form
1. tambahkan tombol,label dan textbox
2. ubah setting properti tombol
menambahkan program pada tombol
Tombol yang dibuat, belum menghasikan apa-apa artinya belum punya action .supaya tombol tersebut di-lik,akan di kerjakan sesuatu misal:misal menyimpan data ke database atau keluar dari form ,untuk itu harus menambahkan program ke dalam tombol tersebut.
Kontrol adalah salah satu bentuk class pada pemrograman visual. Kontrol adalah komponen-komponen program yang dapat digunakan secara langsung oleh pemrogram untuk menghasilkan sebuah aplikasi.
Kontrol-kontrol dasar yang disediakan visual basic diantaranya adalah ; Label, text box, command button, dsb. Kontrol ini dapat digunakan langsung oleh pemrograman dengan cara memindahkannya ke object form dari jendela ToolBox.
Jendela ToolBox berisi daftar class-class kontrol. Pada saat sebuah kontrol diletakkan didalam form, barulah sebuah objek kontrol tercipta

SOURCE CODE TAMPILAN BINTANG

//Memanggil library yang akan digunakan
#include
#include
#include
#include
//Inisialisasi ukuran dari window
GLsizei winWidth=400, winHeight=400;
//Pengesetan terhadap range dari koordinat
GLfloat xwcMin=0.0,xwcMax=50.0;
GLfloat ywcMin=0.0,ywcMax=50.0;
class wcPt2D {
public: GLfloat x,y;
};
//Deklarasi variabel yang digunakan
typedef GLfloat Matrix3x3 [3][3];
Matrix3x3 matComposite;
const GLdouble pi=3.14159;
//Pengesetan warna background window menjadi hijau
void init(void) {
glClearColor(0.0,1.0,0.0,0.0);
}
//Construksi matriks identitas 3x3
void matrix3x3SetIdentity (Matrix3x3 matIdent3x3){
GLint row, col;
for(row=0;row<3;row++)
for(col=0;col<3;col++)
matIdent3x3[row][col]=(row==col);
}
//Melakukan perkalian terhadap matriks m1 dan m2 lalu hasilnya ditampung di m2
void matrix3x3PreMultiply (Matrix3x3 m1, Matrix3x3 m2){
GLint row, col;
Matrix3x3 matTemp;
for(row=0;row<3;row++)
for(col=0;col<3;col++)
matTemp[row][col]=m1[row][0]*m2[0][col]+m1[row][1]*m2[1][col]+m1[row][2]*m2[2][col];
for(row=0;row<3;row++)
for(col=0;col<3;col++)
m2[row][col]=matTemp[row][col];
}
//Fungsi untuk melakukan rotasi sebesar theta(sudut) yang diinputkan
void rotate2D(wcPt2D pivotPt, GLfloat theta){
Matrix3x3 matRot;
matrix3x3SetIdentity(matRot);
matRot[0][0]=cos(theta);
matRot[0][1]=-sin(theta);
matRot[0][2]=pivotPt.x * (1-cos(theta))+pivotPt.y * sin(theta);
matRot[1][0]=sin(theta);
matRot[1][1]=cos(theta);
matRot[1][2]=pivotPt.y * (1-cos(theta))-pivotPt.x * sin(theta);
matrix3x3PreMultiply(matRot,matComposite);
}
//Menggunakan matriks kompososit, dan melakukan transformasi koordinat
void transformVerts2D(GLint nVerts, wcPt2D * verts){
GLint k;
GLfloat temp;
for(k=0;ktemp=matComposite[0][0]*verts[k].x+matComposite[0][1]*verts[k].y+matComposite[0][2];
verts[k].y=matComposite[1][0]*verts[k].x+matComposite[1][1]*verts[k].y+matComposite[1][2];
verts[k].x=temp;
}
}
//Menggambarkan satu sisi dari 5 sisi bintang dengan menggunakan koordinat yang ditentukan
void bintang(wcPt2D *verts)
{
GLint k;
glBegin(GL_LINE_LOOP);
for(k=0;k<6;k++)
glVertex2f(verts[k].x,verts[k].y);
glEnd();
}
//Fungsi utama yang menampilkan bintang
void displayFcn(void){
//deklarasi jumlah titik-titik pada satu sisi bintang
GLint nVerts=6;
//deklarasi koordinat dari titik-titik yang digunakan
wcPt2D verts[6]={{17.3,23.5},{24.5,45.9},{29.6,30.2},{26.4,30.2},{24.5,36.0},{19.8,21.7}};
wcPt2D centroidPt,pivPt,fixedPt;
//deklarasi titik pusat sebagai sumbu putar
centroidPt.x=24.5;
centroidPt.y=23.2;
pivPt=centroidPt;
fixedPt=centroidPt;
//deklarasi besar sudut perputaran
GLdouble theta=2*pi/5;
glClear(GL_COLOR_BUFFER_BIT);//Clear window
glColor3f(0.0,0.0,0.0);//Set warna garis luar bintang menjadi hitam
//Menggambarkan sisi tersebut sebanyak lima kali hingga membentuk bintang
for(int i=0; i<6; i++){
bintang(verts);
matrix3x3SetIdentity(matComposite);
rotate2D(pivPt,theta); //?Rotasi terhadap sisi yang telah digambar
transformVerts2D(nVerts,verts);
}
glFlush();
}
//Fungsi untuk pengondisian window
void winReshapeFcn(GLint newWidth, GLint newHeight){
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(xwcMin,xwcMax,ywcMin,ywcMax);
glClear(GL_COLOR_BUFFER_BIT);
}
//Fungsi utama/main yang dipanggil ketika awal program dijalankan
int main(int argc, char ** argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
glutInitWindowPosition(50,50);
glutInitWindowSize(winWidth,winHeight);
glutCreateWindow("Gambar Bintang");
init();
glutDisplayFunc(displayFcn);
glutReshapeFunc(winReshapeFcn);
glutMainLoop();
return 0;
}

Source Code Sistem Informasi Parkiran ( VB .NET)

Imports System.Data.SqlClient


Public Class Form1
Dim kon As New SqlConnection
Dim kom As New SqlCommand
Dim da As New SqlDataAdapter
Dim ds As New DataSet
Dim sql As String
Dim tbl As DataTable
Sub konek()
Try
kon.Close()
kon.ConnectionString = "Data Source=.\SQLEXPRESS;AttachDbFilename=D:\KULIAH\SEMESTER 4\PRAKTIKUM BASIS DATA\FINAL PROJECT\FP PARKIRAN\FP PARKIRAN\parkir.mdf;Integrated Security=True;User Instance=True"
kon.Open()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Sub data_record()
Call konek()
sql = "select*from parkir"
da = New SqlDataAdapter(sql, kon)
da.Fill(ds, "parkir")
Dim gridview As New DataView(ds.Tables("parkir"))
DGparkir.DataSource = gridview
DGparkir.Columns(0).Width = 40
DGparkir.Columns(1).Width = 100
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
konek()
data_record()
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
kom.Connection = kon
kom.CommandText = "insert into parkir values('" & TextBox1.Text & "','" & TextBox2.Text & "')"
kom.ExecuteNonQuery()
MsgBox("Data Telah Di Simpan")

Catch ex As Exception
MsgBox(ex.Message)

End Try
End Sub

Private Sub DGparkir_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DGparkir.CellContentClick

End Sub

Private Sub DGparkir_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles DGparkir.DoubleClick
TextBox1.Text = DGparkir.SelectedCells(0).Value
TextBox2.Text = DGparkir.SelectedCells(1).Value
End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Try
kom.Connection = kon
kom.CommandText = "delete from parkir where nopol = ('" & TextBox1.Text & "')"
kom.ExecuteNonQuery()
MsgBox("Data Telah Di Hapus")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
kom.Connection = kon
kom.CommandText = "update parkir set jenis_kendaraan = '" & TextBox2.Text & "' where nopol = '" & TextBox1.Text & "'"
kom.ExecuteNonQuery()
TextBox1.Text = ""
TextBox1.Text = ""
MsgBox("Data Telah Di Ubah")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub

Private Sub Label2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Label2.Click

End Sub

Private Sub GroupBox1_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles GroupBox1.Enter

End Sub
End Class

About this blog

Diberdayakan oleh Blogger.

About Me

Foto saya
kalo anda mengenAL saya,, anda ga mgkin menyesal apabila ntar qta berteman...