- なび
- ぬし
- 会議室デビュー日: 2007/08/27
- 投稿数: 273
|
投稿日時: 2007-09-28 14:14
こんにちは。
VB2005の質問です。
おかしな質問かも知れませんが、教えて下さい。
テキストボックスでコードを入力したら名前をラベルにセットする処理です。
Ds.Tables(0).Rows(0)("名前")でセットしています。
コード入力_Validating
Dim Ds As New DataSet
Ds = gDs(DataSetを返すクラス)
ラベル = Ds.Tables(0).Rows(0)("名前")
そこでお聞きしたいのが
このコード入力を何度も行った場合 Dim Ds As New DataSet
とコーディングしていますので
入力 戻り 再入力
を繰り返した場合 Dim Ds As New DataSetによって
メモリ不足とかにならないのか教えて下さい。
またDataSetを破棄する必要があるのですか?
宜しくお願いします。
|
- 囚人
- ぬし
- 会議室デビュー日: 2005/08/13
- 投稿数: 1019
|
投稿日時: 2007-09-28 14:31
ガベージコレクションが勝手に解放してくれるので放置でよいですが、そもそも
Ds = gDs(DataSetを返すクラス)
で DataSet を取得しているので、New する必要は全くないでしょう。
_________________ 囚人のジレンマな日々
|
- mso
- ぬし
- 会議室デビュー日: 2003/12/04
- 投稿数: 496
- お住まい・勤務地: 宮城
|
投稿日時: 2007-09-28 15:28
msoです。
引用: |
|
なびさんの書き込み (2007-09-28 14:14) より:
このコード入力を何度も行った場合 Dim Ds As New DataSet
とコーディングしていますので
入力 戻り 再入力
を繰り返した場合 Dim Ds As New DataSetによって
メモリ不足とかにならないのか教えて下さい。
またDataSetを破棄する必要があるのですか?
宜しくお願いします。
|
何度も何度も繰り返しやればいつかはメモリ不足にはなると思います。
そんなことを気にするよりも「常に使ったものは片付ける」の精神で
メモリを破棄すればよろしいと思います。
using使えば意識しなくてもいいので、便利ですよ。
|
- まるく
- 大ベテラン
- 会議室デビュー日: 2004/01/09
- 投稿数: 181
|
投稿日時: 2007-09-28 15:50
引用: |
|
何度も何度も繰り返しやればいつかはメモリ不足にはなると思います。
|
...囚人さんの書込みで正しいです。
引用: |
|
using使えば意識しなくてもいいので、便利ですよ。
|
usingとメモリ(マネージリソース)の解放は別問題です。
確かに DataTable に Dispose は実装されているけれども。。。
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2007-09-28 15:58
引用: |
|
msoさんの書き込み (2007-09-28 15:28) より:
何度も何度も繰り返しやればいつかはメモリ不足にはなると思います。
|
そうなのでしょうか?
コード: |
|
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
For i As Integer = 0 To 10000
Me.OneMethod()
Next
End Sub
Private Sub OneMethod()
Dim ds As New System.Data.DataSet()
ds = Me.GetDataSetMethod()
Me.Label1.Text = ds.Tables(0).Rows(0)(0).ToString()
End Sub
Private Function GetDataSetMethod() As System.Data.DataSet
Using connection As New System.Data.SqlClient.SqlConnection("Data Source=Server; Initial Catalog=NorthWind; Integrated Security=SSPI;")
Using command As New System.Data.SqlClient.SqlCommand("SELECT * FROM Employees", connection)
Using dataAdapter As New System.Data.SqlClient.SqlDataAdapter(command)
Dim dataSet As New System.Data.DataSet()
dataAdapter.Fill(dataSet)
Return dataSet
End Using
End Using
End Using
End Function
|
気にしているからこその質問だと思うのですが、これはどういう意味合いなのでしょうか?
引用: |
|
「常に使ったものは片付ける」の精神で
メモリを破棄すればよろしいと思います。
using使えば意識しなくてもいいので、便利ですよ。
|
Using ステートメントでメモリが破棄できるのでしょうか? 初めて聞きました。
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- なび
- ぬし
- 会議室デビュー日: 2007/08/27
- 投稿数: 273
|
投稿日時: 2007-09-28 16:42
ご返答ありがとうございます。
「ガベージコレクションが勝手に解放してくれるので放置でよいですが」
によって気にすることはないのですよね。
|
- まるく
- 大ベテラン
- 会議室デビュー日: 2004/01/09
- 投稿数: 181
|
投稿日時: 2007-09-28 19:20
引用: |
|
「ガベージコレクションが勝手に解放してくれるので放置でよいですが」
によって気にすることはないのですよね。
|
Yes ですが、何故そうなのかという理由は知っておいた方が良いと思います。 Using 句等含めてこの際に学習されてみては?
|
- KI
- 大ベテラン
- 会議室デビュー日: 2007/01/10
- 投稿数: 239
|
投稿日時: 2007-09-28 20:58
引用: |
|
囚人さんの書き込み (2007-09-28 14:31) より:
ガベージコレクションが勝手に解放してくれるので放置でよいですが、そもそも
Ds = gDs(DataSetを返すクラス)
で DataSet を取得しているので、New する必要は全くないでしょう。
|
囚人さんのこの指摘の意味は理解されたんでしょうか?
こういうコードを書いてしまうということは、
インスタンスとか、参照型とか、基本的な部分を理解されていないんだと思います。
解放とかUsingより前にそちらを勉強されたほうがよいと思います。
|