μλ
νμΈμ. 
C# 9.0 κΈ°λ₯μΈ Top-level Statementsμ λν΄ μμλ³΄κ³ μλλ°μ.
νΉμ WPFλ μ€νν μ μμκΉμ?
Consoleμ κ²½μ°μλ μ λμνλ κ²μ νμΈνμ΅λλ€.
using System;
Console.WriteLine("Hello");
Console.WriteLine(args);
κ·Έλμ μ΄μ λΉμ·νκ² WPFλ μμ©ν΄λ³΄μμ΅λλ€.
using System;
Application app = new Application();
app.Startup += (s, e) => new Window().Show();
app.Run();
μ±μ μ€ννλ©΄ [STAThread] κ΄λ ¨ μλ¬κ° λ©λλ€.
λ§μ UI κ΅¬μ± μμμμ νΈμΆ μ€λ λκ° νμνλ―λ‘β¦
κ·Έλμ [STAThread]λ μΆκ°ν΄λ΄€μ΅λλ€.
using System;
[STAThread]
void WpfStart()
{
Application app = new Application();
app.Startup += (s, e) => new Window().Show();
app.Run();
}
WpfStart();
μ΄λ κ²λ ν΄λ΄€μ§λ§ λμΌν μλ¬κ° λ°μλ©λλ€.
νΉμ μ κ° μλͺ» μ¬μ©ν λΆλΆμ΄ μμκΉμ? κ·Έλ¦¬κ³ μ΄ κΈ°λ₯μ΄ μ΄λ€ μλλ‘ μ¬μ©λμΌ νλμ§λ κΆκΈν©λλ€!
μ½μ΄μ£Όμ
μ κ°μ¬ν©λλ€.
2κ°μ μ’μμ
dimohy
2
Top-level Statementsλ attributeλ₯Ό μΈ μ μλ κ²μΌλ‘ νμΈλ©λλ€. TLSλ μ²μ C# μ μ νλ μ¬λμ΄ μΈμ΄λ₯Ό μ κ·ΌνκΈ° μ½κ² νκΈ° μν λͺ©μ μ΄ μμ΄μ κ·Έλ°κ² κ°μ΅λλ€.
2κ°μ μ’μμ
kevin13
3
μ΄μ© μ μμ΅λλ€. μ§μ ν΄μ€μΌμ£ . ^^; μλμ κΈμ κ΄λ ¨ λ΅λ³μ΄ μμ΅λλ€.
[c# 9.0 - How to handle {STAThread] in C# 9 Using Top-Level Program.cs - Stack Overflow](c# 9.0 - How to handle {STAThread] in C# 9 Using Top-Level Program.cs - Stack Overflow)
νΉμ μ’ λ 볡μ‘νμ§λ§ μλμ κΈμ μλ StartSTATask λ©μλλ₯Ό μ΄μ©ν΄,
c# - Set ApartmentState on a Task - Stack Overflow
λ€μκ³Ό κ°μ μμΌλ‘ μ½λ©νλ©΄ λ©λλ€.
using System;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
await StartSTATask(() =>
{
Application app = new Application();
app.Startup += (s, e) => new Window().Show();
app.Run();
return 0;
});
static Task<T> StartSTATask<T>(Func<T> func)
{
var tcs = new TaskCompletionSource<T>();
Thread thread = new Thread(() =>
{
try
{
tcs.SetResult(func());
}
catch (Exception e)
{
tcs.SetException(e);
}
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
return tcs.Task;
}
4κ°μ μ’μμ
rkttu
4
λΉμ·ν μ΄μ λ‘ Windows Forms μ ν리μΌμ΄μ
λ TLP κΈ°λ₯μΌλ‘ μ½λλ₯Ό μμν μ μκ³ , μμ λΆλ€μ΄ λ΅κΈμ λ¬μμ£Όμ κ²μ²λΌ workaroundλ₯Ό μ
νμΌ νλλ° βκ΅³μ΄?β μΆμ λΆλΆμ΄ μκΈ°λ κ² κ°μμ. γ
γ
2κ°μ μ’μμ
rkttu
5
μ, κ·Έλ¦¬κ³ μ΄μ WPFμ κ΄λ ¨λ λ΄μ©μ μλμ° λ°μ€ν¬ν± Q&A μͺ½μΌλ‘ μ¬λ €μ£Όμλ©΄ λ μ’μ κ² κ°μ΅λλ€! @jamesnet214
2κ°μ μ’μμ
dimohy
6
Thread.CurrentThread.SetApartmentState(ApartmentState.Unknown);
Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
λ₯Ό ν΅ν΄ μ΅μμλ¬Έμμ [STAThread] ν¨κ³Όλ₯Ό μ€ μ μλ€κ³ ν©λλ€β¦ μ νμΈν΄λ΄€λλ λλ€μ.
2κ°μ μ’μμ