Tak jsem si zkusil vložit vlákno co jsme dělali ve škole do mého programu a zkoumat jak se to bude chovat. Bo za zkoušku nic nedám. Snažil jsem se vložit tam takové vlákno, které bude v konzoli vypisovat vlakno1 a vlakno2 a myslel jsem, že to bude vypisovat v konzoli a k tomu ještě nahrávat. Ale opak byl pravdou. Nevíte jak to upravit, aby to vypisovalo a nahrávalo? Nebo je to úplná kravina to co jsem udělal? Díkes
using System;
using System.IO;
using System.Reflection;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic.Devices;
using Microsoft.VisualBasic;
using System.Runtime.InteropServices;
using System.Threading;
using System.Timers;
using System.Diagnostics;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public void Start()
{
new Thread(new ThreadStart(ProcessTimer)).Start();
}
private void ProcessTimer()
{
DateTime Now = DateTime.Now;
TimeSpan ts = stopky.Elapsed;
string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds / 10);
label4.Text = " " + elapsedTime;
}
//pro nahravani
[DllImport("winmm.dll", EntryPoint = "mciSendStringA", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = true)]
private static extern int mciSendString(string lpstrCommand, string lpstrReturnString, int uReturnLength, int hwndCallback);
//pro prehravac
[DllImport("winmm.dll")]
private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);
public Form1()
{
InitializeComponent();
button4.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
label4.Text = " ";
//kontrola souboru LAME.EXE na C:\
FileInfo soubor = new FileInfo(Path.Combine(Environment.CurrentDirectory, "c:\\lame.exe"));
if (!soubor.Exists) //kdyz soubor lame.exe neexistuje zabraz zpravu
{
MessageBox.Show("Pro správnou funkci programu, prosím nakopírujte soubor \"LAME.EXE\" do kořenového adresáře C:\\ \n\nProgram se nyní ukončí."); //kontrola souboru LAME.EXE na disku C:\
System.Environment.Exit(0); //pokud se soubor LAME.EXE nenajde na disku, program se ukončí "killnutí procesu"
}
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//nahrávání do wav
Stopwatch stopky = new Stopwatch();
private void button1_Click(object sender, EventArgs e) //aktivace nahrávání z mikrofonu
{
Vlakno.Hlavni(); //spuštění vlákna
Thread.Sleep(10); //uspání vlákna
mciSendString("open new Type waveaudio Alias recsound", "", 0, 0);
mciSendString("record recsound", "", 0, 0);
button2.Enabled = true;
}
private void button2_Click(object sender, EventArgs e) //zastaveni nahravani a ulozeni zalozniho souboru nahravka.wav
{
//TimeSpan ts = stopky.Elapsed;
//string elapsedTime = String.Format("{0:00}:{1:00}:{2:00}.{3:00}",ts.Hours, ts.Minutes, ts.Seconds,ts.Milliseconds / 10);
//label4.Text = " " + elapsedTime;
mciSendString("save recsound c:\\nahravka.wav", "", 0, 0); //ulozeni nahravka.wav
mciSendString("close recsound ", "", 0, 0); //ukonceni souboru nahravka.wav
Computer c = new Computer();
c.Audio.Stop();
button3.Enabled = true;
button4.Enabled = true;
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//dekódování z wav do mp3
private void button3_Click(object sender, EventArgs e)
{
SetOutputFileName(); //načtení složky, kam se ulozi vystupni soubor
}
private void SetOutputFileName()
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
string newFileName = System.IO.Path.GetFileNameWithoutExtension("c:\\nahravka.wav");
textBox1.Text = folderBrowserDialog1.SelectedPath + string.Format(@"\{0}.mp3", newFileName); //za {0} můžu napsat jakýkoli název, který má obsahovat výstupní soubor
}
}
private void button4_Click(object sender, EventArgs e)
{
ConvertWavToMp3(); //aktivace konvertoru
MessageBox.Show("Nahrávka byla vytvořena"); //vyskoceni hlasky "Nahravka byla vytvorena"
System.IO.File.Delete(@"c:\\nahravka.wav"); //Po uložení souboru smažeme soubor "c:\nahravka.wav"
button2.Enabled = false;
button3.Enabled = false;
button4.Enabled = false;
}
private void ConvertWavToMp3()
{
string outfile = "-b 32 --resample 22.05 -m m \"" + "c:\\nahravka.wav" + "\" \"" + textBox1.Text.Replace(".wav", ".mp3") + "\"";
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = "\"" + "c:\\" + "lame.exe" + "\""; //cesta k lame.exe
psi.Arguments = outfile;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
}
//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//přehrávač
private void button5_Click(object sender, EventArgs e)
{
mciSendString("open \"" + textBox1.Text + "\" type mpegvideo alias MediaFile", null, 0, IntPtr.Zero);
mciSendString("play MediaFile", null, 0, IntPtr.Zero);
button5.Enabled = false;
button6.Enabled = true;
}
private void button6_Click(object sender, EventArgs e)
{
mciSendString("close MediaFile", null, 0, IntPtr.Zero);
button6.Enabled = false;
button5.Enabled = true;
}
//==========================Vlakno===================================
public class Vlakno
{
string jmeno;
int interval;
public Vlakno(string jmeno, int interval)
{
this.jmeno = jmeno;
this.interval = interval;
}
public void Run()
{
while (true)
{
Console.WriteLine("Vlakno {0}", jmeno);
Thread.Sleep(100);
}
}
public static void Hlavni()
{
Vlakno v1 = new Vlakno("v1", 500);
Vlakno v2 = new Vlakno("v2", 1000);
Thread t1 = new Thread(new ThreadStart(v1.Run));
Thread t2 = new Thread(new ThreadStart(v2.Run));
t1.Start();
t2.Start();
t1.Join();
t2.Join();
}
}
}
}