Public Class ImageProxy Private done As Boolean Private tm As Timer Public Sub New() done = False '设置timer 延迟5秒 tm = New Timer(New TimerCallback(AddressOf tCallback), Me, 5000, 0) End Sub Public Function isReady() As Boolean Return done End Function Public Function getImage() As Image Dim img As Imager '显示预先的图像,直到实际图像载入完成 If isReady Then img = New FinalImage() Else img = New QuickImage() End If Return img.getImage End Function Public Sub tCallback(ByVal obj As Object) done = True tm.Dispose() End Sub End Class |
Public Interface Imager Function getImage() As image End Interface |
Public Class QuickImage Implements Imager Public Function getImage() As Image Implements Imager.getImage Return New bitmap("Box.gif") End Function End Class |
Public Class FinalImage Implements Imager Public Function getImage() As Image Implements Imager.getImage Return New Bitmap("flowrtree.jpg") End Function End Class |
Private imgProxy As ImageProxy Public Sub New() MyBase.New Form1 = Me InitializeComponent imgproxy = New ImageProxy() End Sub Protected Sub btLoad_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btLoad.Click pic.Image = imgProxy.getImage End Sub |