Yazdığım programda kolaylık sağlamak açısından bazı metotlar hazırlıyorum ve çoklu işlemler için kolaylaştırılmış bir metot yazmak istedim. Fakat kullanmak istediğimde hata alıyorum. Yardımcı olabilir misiniz rica etsem?
Niyetim Thread ögesini bir metot içine sokup her kullanmam geretiğinde tekrar Thread sınıfından nesne oluşturmamak. Bu sayede CokluIslemBaslat(CagrilacakMetot()); yazdığımda bu işlemin gerçekleştirilmesini istiyorum. Korkum her şeyi baştan yazmak zorunda kalmak.
Hata "C:\Users\Administrator\Desktop\VDDW\VDDW\Program.cs(16,13): error CS1503: 1 bagimsiz degiskeni: 'void' ögesinden 'System.Threading.ParameterizedThreadStart' ögesine dönüstürülemiyor [C:\Users\Administrator\Desktop\VDDW\VDDW\VDDW.csproj]"
[CODE lang="csharp" title="CokluIslemSistemi.cs"] public static void CokluIslemBaslat (ParameterizedThreadStart CokluIslemFonksiyonu)
{
Console.WriteLine("Çoklu işlem sistemi başlatıldı.");
Thread CokluIslem = new Thread(CokluIslemFonksiyonu);
CokluIslem.Start();
}[/CODE]
[CODE lang="csharp" title="Program.cs"]using System;
using System.Net;
using System.IO;
using static DownloadManager;
using static configGenel;
using static VeriTabani;
using static CokluIslemSistemiKutuphaneleri;
public class Program
{
public static void Main(string[] args)
{
CokluIslemBaslat(
HizliDosyaIndir("https://www.rarlab.com/rar/winrar-x64-601tr.exe","C:/Users/Administrator/Desktop/VDDW/VDDW/Indirilenler/","WinRAR","exe")
);
VeriTabaniBilgileriniAl(CFSunucuAdresi,CFVeritabaniAdi,CFKullaniciAdi,CFSifre,MySqlPort,true);
VeriTabaninaBaglantisiniBaslat();
}
}
[/CODE]
[CODE lang="csharp" title="DownloadManager.cs"]using System;
using System.Net;
using System.IO;
using static configGenel;
public static class DownloadManager {
public static void AgKontrol()
{
bool AgDurumu = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
if (AgDurumu==true) {
Console.WriteLine("Ağ Durumu: Aktif!");
}
else if (AgDurumu==false) {
Console.WriteLine("Ağ Durumu: Pasif!");
}
}
public static string DosyaBilgileriniAl (String DosyaAdresi,String DosyaYolu,String DosyaAdi,String DosyaTuru)
{
//Dosya adresi yönetimi.
if (DosyaAdresi == null) {
Console.WriteLine("Hata: Parametredeki ifade bir geçerli bir web ifadesi değil.");
}
else if (DosyaAdresi != null) {
Console.WriteLine("İşlem: Dosyanın indirileceği web adres seçildi.");
}
//Dosya yolu yönetimi.
if (DosyaYolu == null) {
DosyaYolu = CFDosyaYolu;
Console.WriteLine("İşlem: Dosyanın kaydedileceği dizin varsayılan olarak seçildi.");
}
else if (DosyaYolu != null) {
//DosyaYolu = DosyaYolu;
Console.WriteLine("İşlem: Dosyanın kaydedileceği dizin parametreden seçildi.");
}
//Dosya adı yönetimi.
if (DosyaAdi == null) {
Console.WriteLine("İşlem: Dosya adı parametreden alınamadı!");
Random RastgeleSayiOlusturucuNesne = new Random();
int rasgeleSayiAdi =RastgeleSayiOlusturucuNesne.Next(1,1000000);
String rasgeleDosyaAdi = "File";
//bool DosyaAdiKontrolu = File.Exists(); Bu kısım spilitle bilgiler ayarlandıktan sonra yapılacak
DosyaAdi = rasgeleDosyaAdi + rasgeleSayiAdi;
Console.WriteLine("İşlem: Dosyaya rasgele bir isin seçildi.");
}
else if (DosyaAdi != null) {
Console.WriteLine("İşlem: Dosya adı parametreden alındı..");
}
//Dosya türü yönetimi.
if (DosyaTuru == null) {
Console.WriteLine("Hata: Parametreden dosya uzantısı alınamadı.");
DosyaTuru = "."+"CFunknown";
Console.WriteLine("İşlem: Uzantı bilinmediği için rasgele atama yapıldı.");
}
else if (DosyaTuru != null) {
Console.WriteLine("İşlem: Parametreden dosya uzantısı alındı.");
}
CFDosyaAdresi = DosyaAdresi;
CFDosyaYolu = DosyaYolu;
CFDosyaAdi = DosyaAdi;
CFDosyaTuru = DosyaTuru;
Console.WriteLine("İşlem: İndirilecek dosyanın adresi: " + DosyaAdresi);
Console.WriteLine("İşlem: İndirilecek dosyanın kaydedileceği dizin: " + DosyaYolu);
Console.WriteLine("İşlem: İndirilecek dosyanın adı: " + DosyaAdi);
Console.WriteLine("İşlem: İndirilecek dosyanın uzantısı: " + DosyaTuru);
return DosyaAdresi + " " + DosyaYolu + " " + DosyaAdi + " " + DosyaTuru;
}
public static async void DosyaIndır ()
{
webErisimi.DownloadFile(CFDosyaAdresi,CFDosyaYolu+CFDosyaAdi+CFDosyaTuru);
}
public static bool DosyaVarmi ()
{
bool DosyaDurumu = File.Exists(CFDosyaYolu+CFDosyaAdi+CFDosyaTuru);
CFDosyaDurumu = DosyaDurumu;
return DosyaDurumu;
}
public static void DosyaBoyutunuAl ()
{
webErisimi.OpenRead(CFDosyaAdresi);
CFDosyaBoyutuBAYT = Convert.ToInt64(webErisimi.ResponseHeaders["Content-Length"]);
if (CFDosyaBoyutuBAYT >= 1073741824.0) {
CFDosyaBoyutuGB = CFDosyaBoyutuBAYT / 1073741824.0; //GB için.
Console.WriteLine("Bilgi: " + CFDosyaBoyutuGB + " GB");
}
else if (CFDosyaBoyutuBAYT >= 1048576.0) {
CFDosyaBoyutuMB = CFDosyaBoyutuBAYT / 1048576.0; //MB için.
Console.WriteLine("Bilgi: " + CFDosyaBoyutuMB + " MB");
}
else if (CFDosyaBoyutuBAYT >= 1024.0) {
CFDosyaBoyutuKB = CFDosyaBoyutuBAYT / 1024.0; //KB için.
Console.WriteLine("Bilgi: " + CFDosyaBoyutuKB + " KB");
}
else if (CFDosyaBoyutuBAYT >0 && CFDosyaBoyutuBAYT <1024.0) {
//CFDosyaBoyutuBAYT = CFDosyaBoyutuBAYT;
Console.WriteLine("Bilgi: " + CFDosyaBoyutuBAYT + " Bayt");
}
}
public static void HizliDosyaIndir (String IndirilecekDosyaAdresi,String DosyaninKaydedilecegiDizin,String DosyaAdi, String DosyaTuru)
{
AgKontrol();
DosyaBilgileriniAl(IndirilecekDosyaAdresi,DosyaninKaydedilecegiDizin,DosyaAdi,"."+DosyaTuru);
DosyaBoyutunuAl();
if (DosyaVarmi()) {
Console.WriteLine("İşlem: Dosya zaten sisteminizde var. İndirme pas geçildi.");
}
else {
DosyaIndır();
Console.WriteLine("İşlem: Dosya indirildi.");
}
}
}
[/CODE]
Yetkililer bazen cidden sinirimi bozuyor. Şu konu başlıklarına dokunmasanız ölürsünüz değil mi? Ben gayet açıklayıcı bir başlık seçtim ki buna rağmen yine de yetkililer kendi bildiğini okuyor. Sizden konu başlığını değiştirmenizi isteyen oldu mu?
Niyetim Thread ögesini bir metot içine sokup her kullanmam geretiğinde tekrar Thread sınıfından nesne oluşturmamak. Bu sayede CokluIslemBaslat(CagrilacakMetot()); yazdığımda bu işlemin gerçekleştirilmesini istiyorum. Korkum her şeyi baştan yazmak zorunda kalmak.
Hata "C:\Users\Administrator\Desktop\VDDW\VDDW\Program.cs(16,13): error CS1503: 1 bagimsiz degiskeni: 'void' ögesinden 'System.Threading.ParameterizedThreadStart' ögesine dönüstürülemiyor [C:\Users\Administrator\Desktop\VDDW\VDDW\VDDW.csproj]"
[CODE lang="csharp" title="CokluIslemSistemi.cs"] public static void CokluIslemBaslat (ParameterizedThreadStart CokluIslemFonksiyonu)
{
Console.WriteLine("Çoklu işlem sistemi başlatıldı.");
Thread CokluIslem = new Thread(CokluIslemFonksiyonu);
CokluIslem.Start();
}[/CODE]
[CODE lang="csharp" title="Program.cs"]using System;
using System.Net;
using System.IO;
using static DownloadManager;
using static configGenel;
using static VeriTabani;
using static CokluIslemSistemiKutuphaneleri;
public class Program
{
public static void Main(string[] args)
{
CokluIslemBaslat(
HizliDosyaIndir("https://www.rarlab.com/rar/winrar-x64-601tr.exe","C:/Users/Administrator/Desktop/VDDW/VDDW/Indirilenler/","WinRAR","exe")
);
VeriTabaniBilgileriniAl(CFSunucuAdresi,CFVeritabaniAdi,CFKullaniciAdi,CFSifre,MySqlPort,true);
VeriTabaninaBaglantisiniBaslat();
}
}
[/CODE]
[CODE lang="csharp" title="DownloadManager.cs"]using System;
using System.Net;
using System.IO;
using static configGenel;
public static class DownloadManager {
public static void AgKontrol()
{
bool AgDurumu = System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable();
if (AgDurumu==true) {
Console.WriteLine("Ağ Durumu: Aktif!");
}
else if (AgDurumu==false) {
Console.WriteLine("Ağ Durumu: Pasif!");
}
}
public static string DosyaBilgileriniAl (String DosyaAdresi,String DosyaYolu,String DosyaAdi,String DosyaTuru)
{
//Dosya adresi yönetimi.
if (DosyaAdresi == null) {
Console.WriteLine("Hata: Parametredeki ifade bir geçerli bir web ifadesi değil.");
}
else if (DosyaAdresi != null) {
Console.WriteLine("İşlem: Dosyanın indirileceği web adres seçildi.");
}
//Dosya yolu yönetimi.
if (DosyaYolu == null) {
DosyaYolu = CFDosyaYolu;
Console.WriteLine("İşlem: Dosyanın kaydedileceği dizin varsayılan olarak seçildi.");
}
else if (DosyaYolu != null) {
//DosyaYolu = DosyaYolu;
Console.WriteLine("İşlem: Dosyanın kaydedileceği dizin parametreden seçildi.");
}
//Dosya adı yönetimi.
if (DosyaAdi == null) {
Console.WriteLine("İşlem: Dosya adı parametreden alınamadı!");
Random RastgeleSayiOlusturucuNesne = new Random();
int rasgeleSayiAdi =RastgeleSayiOlusturucuNesne.Next(1,1000000);
String rasgeleDosyaAdi = "File";
//bool DosyaAdiKontrolu = File.Exists(); Bu kısım spilitle bilgiler ayarlandıktan sonra yapılacak
DosyaAdi = rasgeleDosyaAdi + rasgeleSayiAdi;
Console.WriteLine("İşlem: Dosyaya rasgele bir isin seçildi.");
}
else if (DosyaAdi != null) {
Console.WriteLine("İşlem: Dosya adı parametreden alındı..");
}
//Dosya türü yönetimi.
if (DosyaTuru == null) {
Console.WriteLine("Hata: Parametreden dosya uzantısı alınamadı.");
DosyaTuru = "."+"CFunknown";
Console.WriteLine("İşlem: Uzantı bilinmediği için rasgele atama yapıldı.");
}
else if (DosyaTuru != null) {
Console.WriteLine("İşlem: Parametreden dosya uzantısı alındı.");
}
CFDosyaAdresi = DosyaAdresi;
CFDosyaYolu = DosyaYolu;
CFDosyaAdi = DosyaAdi;
CFDosyaTuru = DosyaTuru;
Console.WriteLine("İşlem: İndirilecek dosyanın adresi: " + DosyaAdresi);
Console.WriteLine("İşlem: İndirilecek dosyanın kaydedileceği dizin: " + DosyaYolu);
Console.WriteLine("İşlem: İndirilecek dosyanın adı: " + DosyaAdi);
Console.WriteLine("İşlem: İndirilecek dosyanın uzantısı: " + DosyaTuru);
return DosyaAdresi + " " + DosyaYolu + " " + DosyaAdi + " " + DosyaTuru;
}
public static async void DosyaIndır ()
{
webErisimi.DownloadFile(CFDosyaAdresi,CFDosyaYolu+CFDosyaAdi+CFDosyaTuru);
}
public static bool DosyaVarmi ()
{
bool DosyaDurumu = File.Exists(CFDosyaYolu+CFDosyaAdi+CFDosyaTuru);
CFDosyaDurumu = DosyaDurumu;
return DosyaDurumu;
}
public static void DosyaBoyutunuAl ()
{
webErisimi.OpenRead(CFDosyaAdresi);
CFDosyaBoyutuBAYT = Convert.ToInt64(webErisimi.ResponseHeaders["Content-Length"]);
if (CFDosyaBoyutuBAYT >= 1073741824.0) {
CFDosyaBoyutuGB = CFDosyaBoyutuBAYT / 1073741824.0; //GB için.
Console.WriteLine("Bilgi: " + CFDosyaBoyutuGB + " GB");
}
else if (CFDosyaBoyutuBAYT >= 1048576.0) {
CFDosyaBoyutuMB = CFDosyaBoyutuBAYT / 1048576.0; //MB için.
Console.WriteLine("Bilgi: " + CFDosyaBoyutuMB + " MB");
}
else if (CFDosyaBoyutuBAYT >= 1024.0) {
CFDosyaBoyutuKB = CFDosyaBoyutuBAYT / 1024.0; //KB için.
Console.WriteLine("Bilgi: " + CFDosyaBoyutuKB + " KB");
}
else if (CFDosyaBoyutuBAYT >0 && CFDosyaBoyutuBAYT <1024.0) {
//CFDosyaBoyutuBAYT = CFDosyaBoyutuBAYT;
Console.WriteLine("Bilgi: " + CFDosyaBoyutuBAYT + " Bayt");
}
}
public static void HizliDosyaIndir (String IndirilecekDosyaAdresi,String DosyaninKaydedilecegiDizin,String DosyaAdi, String DosyaTuru)
{
AgKontrol();
DosyaBilgileriniAl(IndirilecekDosyaAdresi,DosyaninKaydedilecegiDizin,DosyaAdi,"."+DosyaTuru);
DosyaBoyutunuAl();
if (DosyaVarmi()) {
Console.WriteLine("İşlem: Dosya zaten sisteminizde var. İndirme pas geçildi.");
}
else {
DosyaIndır();
Console.WriteLine("İşlem: Dosya indirildi.");
}
}
}
[/CODE]
Yetkililer bazen cidden sinirimi bozuyor. Şu konu başlıklarına dokunmasanız ölürsünüz değil mi? Ben gayet açıklayıcı bir başlık seçtim ki buna rağmen yine de yetkililer kendi bildiğini okuyor. Sizden konu başlığını değiştirmenizi isteyen oldu mu?
Son düzenleme: